c ++ delete []是否适用于原始类型

Dr.*_*ana -1 c++ memory-leaks new-operator dynamic-memory-allocation delete-operator

在C++中,如果我有一个动态分配的基本类型数组,是否有必要使用delete []来防止内存泄漏?例如,

char * x = new char[100];
delete x; // is it required to call delete [] x?
struct A {
 ...
};
A *p = new A[30];
delete [] p; // delete p would cause memory leakage
Run Code Online (Sandbox Code Playgroud)

请评论.

Bri*_*ian 5

是的,因为语言需要它.

当数组是标量类型时,很可能如果你意外使用delete而不是delete[]那么你的程序仍然有效.但它仍然是未定义的行为---标准并不保证它的工作原理,下一版本的编译器可能会破坏您的程序.


msc*_*msc 5

如果通过 分配内存new T[n],则必须通过 删除它delete[]

参考常见问题。