C++中delete和delete[]的区别 ?
参考答案:
在C++中,delete
和delete[]
是用于释放动态分配的内存的运算符。它们之间的主要区别在于它们处理的对象类型:
delete
:用于删除单个对象。当你使用new
运算符为一个对象分配内存时,应使用delete
来释放这块内存。例如:
int* p = new int; // 使用new为int对象分配内存
// ... 使用p ...
delete p; // 使用delete释放内存
delete[]
:用于删除对象数组。当你使用new[]
运算符为对象数组分配内存时,应使用delete[]
来释放这块内存。例如:
int* arr = new int[10]; // 使用new[]为int数组分配内存
// ... 使用arr ...
delete[] arr; // 使用delete[]释放内存
如果错误地使用delete
来释放一个使用new[]
分配的对象数组,或者错误地使用delete[]
来释放一个使用new
分配的单个对象,可能会导致未定义的行为,例如内存泄漏或程序崩溃。因此,确保正确地匹配new
/new[]
与delete
/delete[]
是非常重要的。