首页 > 代码库 > delete 与 delete []
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 []
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。