使用gcc版本4.1.2 20080704(Red Hat 4.1.2-48).尚未在Visual C++上进行测试.
在删除"简单"类型的数组时,似乎delete并且delete []工作原理相同.
char * a = new char[1024];
delete [] a; // the correct way. no memory leak.
char * a = new char[1024];
delete a; // the incorrect way. also NO memory leak.
Run Code Online (Sandbox Code Playgroud)
但是,当删除"复杂"类型的数组时,delete会导致内存泄漏.
class A
{
public:
int m1;
int* m2; // a pointer!
A()
{
m2 = new int[1024];
}
~A()
{
delete [] m2; // destructor won't be called when using …Run Code Online (Sandbox Code Playgroud)