LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: colored

大家试试这段代码

[复制链接]
发表于 2003-7-6 12:44:36 | 显示全部楼层
最初由 lordbyorn 发表
free(p);//请注释此句再试试!

这个有错,同一内存不能free两次(m==p,therefor free(m) eq free(p)).
这是Segment fault产生的原因

不知道我说的是否正确?

在一般的书上是这么说的。但这个程序我在dev-c++和win98试验过了。重复free()同一块内存并没有造成什么问题。可能是free掉的内存没有被其它应用程序占用吧。
发表于 2003-7-6 22:00:45 | 显示全部楼层
一次分配只能free一次
多次的话会出现问题
发表于 2004-9-14 14:19:27 | 显示全部楼层

讨论这种话题有意义么

结论就是,不管出现什么结果,code不能这么写
发表于 2004-9-14 19:37:52 | 显示全部楼层
最初由 lonecat 发表
在Linux上,如果程序访问了操作系统认为不属于此程序的内存,就会产生Segment fault,并将程序终止。

如果是在win98上,同样的情况应该是产生一个并不确定的结果,有时是死机,比较倒霉的时候会reboot。

呵呵,我觉得死机比reboot还倒霉阿,reboot至少不用自己按reset键
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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