QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 822|回复: 9

如果访问一个已经释放的内存,会有什么后果?

[复制链接]
发表于 2004-10-17 11:34:26 | 显示全部楼层 |阅读模式
有多少种可能性?
发表于 2004-10-17 11:58:13 | 显示全部楼层
十有八九会出现“段错误”
回复

使用道具 举报

 楼主| 发表于 2004-10-17 13:52:26 | 显示全部楼层
如果那个地址刚好又被本进程分配了呢?也就是说,它访问的还是本身的数据段,只是不再是预期的变量而已?
回复

使用道具 举报

发表于 2004-10-18 19:30:41 | 显示全部楼层
建议不要问此类问题,这就好比不要问警察叔叔“我闯红灯会有多少种后果一样”
回复

使用道具 举报

发表于 2004-10-18 20:58:09 | 显示全部楼层

Re: 如果访问一个已经释放的内存,会有什么后果?

[quote:eec0e5dc0f="老马"]有多少种可能性?[/quote]

你应该看看malloc的实现原理和代码。

现今各种BSD和linux好像都是基于freebsd的malloc写的,那个著名的啤酒协议,freebsd的malloc主要是通过break调用放大段尺寸,然后在上面建表,你想想,在自己建立的链表里的对链表指针值随意涂写会有什么后果呢?
回复

使用道具 举报

 楼主| 发表于 2004-10-19 09:02:45 | 显示全部楼层
简单说吧,我碰到一个问题,出现这种情况的时候程序的3个线程中有一个100%占用CPU,像死循环一样,另外2个线程就好像被阻塞了,一直没有被调度到。没想明白怎么回事。
回复

使用道具 举报

发表于 2004-10-30 22:36:18 | 显示全部楼层
开玩笑,跳楼也许不会死。你敢跳吗?
回复

使用道具 举报

发表于 2004-10-31 16:08:50 | 显示全部楼层
未知的错误
回复

使用道具 举报

发表于 2004-10-31 23:54:27 | 显示全部楼层
As far as I know,In our program we always write extend function to ensure the garbage collection and avoid some hiden uncertain in ANSI C. I suggest you try to add garbage assertion in fuction free() or try to write marco and wirte a testing version of your program.that may reduce the speed of your program but it can actully clarify the problem.Bless You
回复

使用道具 举报

发表于 2004-11-2 20:18:44 | 显示全部楼层
称不上好问题的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:40 , Processed in 0.043572 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表