信息发布→ 登录 注册 退出

c++中new和delete是什么意思_讲解C++中new与delete操作符的用途

发布时间:2025-10-31

点击量:
new用于动态分配堆内存,delete用于释放,需配对使用以防内存泄漏,现代C++推荐智能指针但理解其原理仍为基础。

newdelete 是 C++ 中用于动态内存管理的操作符。它们允许程序在运行时从堆(heap)上分配和释放内存,而不是在栈上由编译器自动管理。

new 操作符:动态分配内存

使用 new 可以在程序运行期间为单个对象或对象数组分配内存空间。它会返回指向所分配类型的指针。

例如:
  • int* p = new int; // 分配一个整型变量的内存
  • int* arr = new int[10]; // 分配一个包含10个整数的数组

此时,这块内存位于堆区,不会随着函数结束而自动释放,需要程序员手动控制。

delete 操作符:释放动态内存

new 配对使用的是 delete,用于释放由 new 分配的内存,防止内存泄漏。

对应上面的例子:
  • delete p; // 释放单个对象
  • delete[] arr; // 释放数组(注意使用 delete[])

如果不调用 delete,那么分配的内存将一直保留,直到程序结束,这可能造成资源浪费。

为什么需要 new 和 delete?

局部变量存储在栈上,生命周期有限。当你需要创建一个生命周期超出当前作用域的对象,或者不确定需要多少内存时(比如用户输入决定数组大小),就需要动态分配。

此外,大型数据结构(如链表节点、动态数组)通常也通过 new 来创建。

注意事项

使用 new 和 delete 时要特别小心:

  • 每次 new 都应有对应的 delete,避免内存泄漏
  • 不要重复释放同一块内存
  • 使用 new[] 分配的数组必须用 delete[] 释放
  • 释放后最好将指针设为 nullptr,防止野指针访问

基本上就这些。虽然现代 C++ 推荐使用智能指针(如 unique_ptr、shared_ptr)来自动管理内存,但理解 new 和 delete 的原理仍是掌握 C++ 内存机制的基础。

标签:# delete  # 这块  # 仍是  # 而不  # 推荐使用  # 设为  # 当你  # 是在  # 的是  # 动态分配  # 对象  #   #   # 数据结构  # 指针  # int  # 局部变量  # 整型  # red  # 为什么  # 作用域  # c++  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!