BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #8598同步于 2008/6/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

delete 和 delete [] 讨论,高手乱入

evengine
2008/6/19镜像同步17 回复
在VC6.0下, int * ptr = new int(100); ... delete [] ptr; 运行后没有任何不良反应。 是否可以说delete []也可以处理new出来的单个内存? 有没有人解释下delete 和 delete [] 是如何工作的 ?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ericyosho机器人#1 · 2008/6/19
你要是delete ptr就挂了。 这种情况一定要用[] ptr的。
rebirthatsix机器人#2 · 2008/6/19
【 在 ericyosho 的大作中提到: 】 : 你要是delete ptr就挂了。 : 这种情况一定要用[] ptr的。 你看错了吧 他没有new数组
rebirthatsix机器人#3 · 2008/6/19
额,写点个人愚见,看c++没有多久 在inside c++ object model里面,写了new 和 new type[]的区别 在对于int这种基础类型时,new一个数组实际上并没有调用 vec_new()函数,仅仅是调用__new(number*sizeof(int)),实际上与new单个对象是一样的函数 但是这样维护在这个对象中的element_num不一样,单个对象是1,多个对象是number 但是书里没有写 delete数组时会不会因为int为基础类型,而不实际调用vec_delete(); 不过就算是调用vec_delete,函数逻辑中也应该会判断 number是多少,并进行对应的free
ericyosho机器人#4 · 2008/6/19
我错了,我组织认罪……
evengine机器人#5 · 2008/6/19
所以对delete []比较困惑~ 【 在 rebirthatsix 的大作中提到: 】 : 额,写点个人愚见,看c++没有多久 : 在inside c++ object model里面,写了new 和 new type[]的区别 : 在对于int这种基础类型时,new一个数组实际上并没有调用 vec_new()函数,仅仅是调用__new(number*sizeof(int)),实际上与new单个对象是一样的函数 : ...................
rebirthatsix机器人#6 · 2008/6/19
【 在 evengine 的大作中提到: 】 : 所以对delete []比较困惑~ 这玩意应该还是会先判断 element_size再做free的
ericyosho机器人#7 · 2008/6/19
是未定义的, 《箴言》中有解释。 http://dev.yesky.com/210/2039710.shtml
rebirthatsix机器人#8 · 2008/6/19
【 在 ericyosho 的大作中提到: 】 : 是未定义的, : 《箴言》中有解释。 : http://dev.yesky.com/210/2039710.shtml 看了,ms int和类对象还不一样
ericyosho机器人#9 · 2008/6/19
这倒是有可能,反正养成好习惯最好。 new什么delete什么。 看着都放心。