返回信息流在VC6.0下,
int * ptr = new int(100);
...
delete [] ptr;
运行后没有任何不良反应。
是否可以说delete []也可以处理new出来的单个内存?
有没有人解释下delete 和 delete [] 是如何工作的 ?
这是一条镜像帖。来源:北邮人论坛 / cpp / #8598同步于 2008/6/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
delete 和 delete [] 讨论,高手乱入
evengine
2008/6/19镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 ericyosho 的大作中提到: 】
: 你要是delete ptr就挂了。
: 这种情况一定要用[] ptr的。
你看错了吧
他没有new数组
额,写点个人愚见,看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
所以对delete []比较困惑~
【 在 rebirthatsix 的大作中提到: 】
: 额,写点个人愚见,看c++没有多久
: 在inside c++ object model里面,写了new 和 new type[]的区别
: 在对于int这种基础类型时,new一个数组实际上并没有调用 vec_new()函数,仅仅是调用__new(number*sizeof(int)),实际上与new单个对象是一样的函数
: ...................
【 在 evengine 的大作中提到: 】
: 所以对delete []比较困惑~
这玩意应该还是会先判断 element_size再做free的
【 在 ericyosho 的大作中提到: 】
: 是未定义的,
: 《箴言》中有解释。
: http://dev.yesky.com/210/2039710.shtml
看了,ms int和类对象还不一样