免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: renstone921
打印 上一主题 下一主题

delete何时开始生效。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-08-08 12:11 |只看该作者

delete何时开始生效。

原帖由 "BabyBlue" 发表:
delete成功后只是给那块内存做个可以回收的标记,并不马上清空。
你通过原来的指针还是可以看到里面的东东,就像你写的那些。
反正我们通常做法是, delete后马上把指向原来的那块内存的指针赋Null

同意!
你在delete后马上再为其它指针申请空间,并赋上初值。然后再看看结果有没有被"幸运地"修改

论坛徽章:
0
12 [报告]
发表于 2005-08-08 23:00 |只看该作者

delete何时开始生效。

如SirFang所说,释放的是this指针,成员函数在编译后会成为具体的函数,并传入this,如果在成员函数中操作这个this指针就会造成Invalid read。

论坛徽章:
0
13 [报告]
发表于 2005-08-08 23:04 |只看该作者

delete何时开始生效。

我在eat()函数里面加了一条value++;还是一样的结果。

论坛徽章:
0
14 [报告]
发表于 2005-08-13 14:35 |只看该作者

delete何时开始生效。

从理论上说,delete应该就是释放了。

但这不是永远都正确,我估计楼主可能是在HP-UX上面的程序。
我以前初学的时候就是在HP-UX11上碰到过这种情况,我的一个同事也
跟我说过Compaq的芯片上好像都有这个问题。

关键的是,转移到VC上就没有问题,会报内存错误。
所以不必担心,因为你是对的。

在开发程序的时候,我们利用工具开发,不能指望工具能够完全控制。
所以呢,delete完了,null是明智的选择,因为你不知道什么时候会
被收回去,这也许就是garbage collection的作用。

记住,你理论上没有错,绕过去才是你想要的结果。
理论跟实践的差别就是这里,标准化就对了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP