标签:copy array lan line new ice 释放 use 第一个
/* Module: delete与delete[]的区别.cpp Notices: Copyright (c) 2017 Landy Tan */ #include <iostream> using 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、
标签:copy array lan line new ice 释放 use 第一个
原文地址:http://www.cnblogs.com/LandyTan/p/6822369.html