免费注册 查看新帖 |

Chinaunix

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

double free or corruption 到底可能是哪些原因造成!? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-04-02 12:05 |只看该作者
哥,你就不能把你的宏名字换成大写的试试?
c/unix 发表于 2010-04-02 10:13

貌似不是宏的问题吧!大小写也是习惯的问题吧,当然大多数都是大写的,基本上成为了默认的法则了但是我昨天看pf_ring的源码的时候就发现上面有两个宏就是小写的,习惯问题

论坛徽章:
0
12 [报告]
发表于 2010-04-02 12:08 |只看该作者
回复 10# leinchu


    你作为守护进程是不是把标准输出关闭了?这样的话当然看不到你打印的free信息.

论坛徽章:
0
13 [报告]
发表于 2010-04-02 21:16 |只看该作者
出错信息不是很清楚么,要么同一个内存地址释放了两次,要么有内存被污染了。
首先你要搞清楚malloc在分配内存的时候系统真正分配的内存会比你所申请的多一些,在内存头上会存放一些系统管理内存所需要的信息以便回收或者再分配的时候使用。而返回给你的地址是这些信息之后的地址。之所以会出这个错基本上是因为这些系统信息被破坏了,或者是有越界写内存,或者是同一个地址释放了两次,前者居多。
其次,不仅仅是你写的代码里会有malloc/free,很多库函数都会用他们来分配和释放内存,比如你在宏里写的printf。楼上说的对,不要去怀疑glibc,那里的代码质量比你的要高得多得多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP