简述delete与 delete []区别 ?
参考答案:
delete
和 delete[]
是 C++ 中用于释放动态分配的内存的运算符。它们之间的主要区别在于它们被用于释放不同类型的内存。
delete
:这个运算符被用于释放单个对象(非数组)的内存。如果你使用new
运算符创建了一个对象,那么你应该使用delete
来释放这个对象的内存。例如:
int* p = new int;
// ...
delete p;
delete[]
:这个运算符被用于释放数组的内存。如果你使用new[]
运算符创建了一个数组,那么你应该使用delete[]
来释放这个数组的内存。例如:
int* arr = new int[10];
// ...
delete[] arr;
使用错误的删除运算符(例如,使用 delete
删除一个数组,或者使用 delete[]
删除一个单个对象)可能会导致未定义的行为,包括内存泄漏和程序崩溃。
在 C++11 及更高版本中,你还可以使用 nullptr
来明确地设置指针为空,以防止出现悬挂指针(dangling pointer)的问题:
delete p;
p = nullptr;
delete[] arr;
arr = nullptr;
这样的做法可以帮助你避免在之后的代码中意外地使用已经被删除的对象或数组。