LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 874|回复: 8

为什么我在LINUX下用free释放内存,程序会出现这样的提示呀.......

[复制链接]
发表于 2005-9-9 15:00:40 | 显示全部楼层 |阅读模式
当我运行程序的时候,就会出现如下的提示:
*** glibc detected *** double free or corruption: 0x09887008 ***
是什么原因呢

下面是我的malloc函数,
void* mymalloc(int size)
{
void* temp;
temp=malloc(size);
if(temp==NULL)
{
printf("malloc failed");
exit(0);
}
return temp;
}
wvalue=(char*)mymalloc(4096);
free(wvalue);
发表于 2005-9-9 16:29:47 | 显示全部楼层
你仔细检查一下,它说你的内存重复释放了。
回复 支持 反对

使用道具 举报

发表于 2005-9-9 16:37:23 | 显示全部楼层
在VC和GCC中都未见异常. 是不是其它地方报的
回复 支持 反对

使用道具 举报

发表于 2005-9-9 16:39:48 | 显示全部楼层
根scim引起的异常有点象, 楼主是不是装了 scim
回复 支持 反对

使用道具 举报

发表于 2005-9-9 16:47:27 | 显示全部楼层
出问题的不是你这一段程序。
回复 支持 反对

使用道具 举报

发表于 2005-9-9 16:51:20 | 显示全部楼层
int *i;
i = (int *)malloc(4096);
free(i);
free(i); /* 在这里就会出现楼主说的错 */
回复 支持 反对

使用道具 举报

发表于 2005-9-9 17:57:34 | 显示全部楼层
这段程序没问题,问题在其他地方。楼主贴的太少了。
回复 支持 反对

使用道具 举报

发表于 2005-9-9 19:15:29 | 显示全部楼层
这是glibc的保护措施,出现这样的提示,表明你写的代码可能产生因为缓冲区溢出而导致的free出错.
你这一段代码似乎没什么问题.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-12 16:29:30 | 显示全部楼层
问题已经解决了,谢谢楼上的各位的回复
回复 支持 反对

使用道具 举报

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

本版积分规则

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