delete 与 delete []
Posted 牠说,要陪你走过春夏秋冬;牠必不食言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delete 与 delete []相关的知识,希望对你有一定的参考价值。
/* 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、
以上是关于delete 与 delete []的主要内容,如果未能解决你的问题,请参考以下文章
无法访问 express js router.delete 中的参数