在c++中,释放new分配的内存空间时,使用delete和delete[]是不是有区别?详细说明下

 我来答
果建翼
2011-06-27 · TA获得超过7922个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2414万
展开全部
C++标准上规定的是:new出来的空间,必须由delete释放,new []出来的空间,必须由delete[] 释放。如果混用,会导致未定义行为。
所谓未定义行为顾名思义,C++标准中未定义,结果可能很正常,也可能不对头,甚至可能让你的程序崩溃。

实际上部分编译器中,一般情况下你一定程度的混用也是ok的(但也仅限于简单数据,如果是重载了operator new[]/delete[]的代码,可能导致灾难性的后果),但不代表所有编译器都如此,因为这个不是C++标准上的规定。所以强烈建议不应混用delete和delete[],必须和new/new[]配对使用。

参见C++大师Marshall Cline写的C++FAQ中16.11章节:

参考资料: http://www.sunistudio.com/cppfaq/freestore-mgmt.html#[16.11]

mylove19491010
2011-06-27
知道答主
回答量:18
采纳率:0%
帮助的人:7.9万
展开全部
对于分配的基本数据类型空间时,delete和delete[]是一样的;
但对于自己定义的类,当用new[]分配空间时,delete只会释放第一个,而delete[]则会释放所有。
所以,简单点说,记住这个使用原则:new 和 delete配套使用,new[] 和 delete[] 配套使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x68251
2011-06-27 · TA获得超过602个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:274万
展开全部
在C++中new和delete是一组开辟/删除单个空间,new[]和delete[]是一组开辟/删除连续多个空间。不能混用的,会产生不可预知的后果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式