跳到主要内容

C++中delete和delete[]的区别 ?

参考答案:

在C++中,deletedelete[]是用于释放动态分配的内存的运算符。它们之间的主要区别在于它们处理的对象类型:

  1. delete:用于删除单个对象。当你使用new运算符为一个对象分配内存时,应使用delete来释放这块内存。例如:
int* p = new int; // 使用new为int对象分配内存
// ... 使用p ...
delete p; // 使用delete释放内存
  1. delete[]:用于删除对象数组。当你使用new[]运算符为对象数组分配内存时,应使用delete[]来释放这块内存。例如:
int* arr = new int[10]; // 使用new[]为int数组分配内存
// ... 使用arr ...
delete[] arr; // 使用delete[]释放内存

如果错误地使用delete来释放一个使用new[]分配的对象数组,或者错误地使用delete[]来释放一个使用new分配的单个对象,可能会导致未定义的行为,例如内存泄漏或程序崩溃。因此,确保正确地匹配new/new[]delete/delete[]是非常重要的。