在C++中,delete
操作符用于释放之前使用 new
操作符分配的动态内存。当你在程序中创建一个对象或者变量,并使用 new
为其分配了内存,你就有责任在不再需要这个对象或变量时使用 delete
来释放内存。这是C++中内存管理的重要部分,因为如果不正确地管理,会导致内存泄漏。
以下是 delete
操作的一些详细说明:
基本用法
-
单个对象: 如果你使用
new
创建了一个对象,你使用delete
来释放它
int* ptr = new int;
*ptr = 10;
delete ptr;
-
对象数组: 如果你使用
new[]
创建了一个对象数组,使用delete[]
来释放它。
int* arr = new int[10];
delete[] arr;
注意事项
-
悬挂指针: 使用
delete
后,原来的指针(如ptr
或arr
)被称为悬挂指针,因为它指向的内存已经被释放。继续使用这个指针是未定义行为,可能导致程序崩溃。 -
不重复释放: 一旦内存被释放,尝试再次释放同一块内存是未定义行为,可能会导致程序崩溃。
-
析构函数: 对于对象,
delete
会自动调用对象的析构函数(如果存在),以执行清理工作,如释放对象持有的其他资源。 -
内存泄漏: 如果忘记使用
delete
释放动态分配的内存,将导致内存泄漏。 -
nullptr安全:
delete
一个nullptr
是安全的,不会导致任何操作。