/* Module: delete与delete[]的区别.cpp Notices: Copyright (c) 2017 Landy Tan*/#includeusing namespace std;class CT{public: inline CT(){ cout << "CT()" << endl; } inline ~CT(){ cout << "~CT()" << endl; }};int main(){ const unsigned short nArrayLen = 5; int *pnArray = new int[nArrayLen]{0}; delete pnArray; // *(pnArray + 1) = 100; 程序崩溃。因为这一块内存已经被释放了 // delete []pnArray; 对于普通数据类型而言,delete与delete[]效果是一样的 pnArray = NULL; CT *c = new CT[nArrayLen]; // delete c; 释放的是第一个元素的。而不是全部 delete []c; // 释放所有的元素 c = NULL; system("pause"); return 0;}// End of File //
结论:
1、对于普通数据类型无论是delete或是delete[],其功能都是一样的。
2、如果是自定义数据类型,delete释放的是下标为0的首元素的内存空间,而不是整个数组。delete[]释放的才是整个数组的空间!
3、