免费注册 查看新帖 |

Chinaunix

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

realloc 出错:"*** glibc detected *** double free or corruption" [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-09-06 13:04 |只看该作者
char *buffer = (char *)malloc(10);

buffer = (char *) realloc(buffer, 100); // 注意:一定要将buffer 重新赋值,因为内核可能更改了buffer值, 我估计你直接使用:  realloc(buffer, 100);  了。

论坛徽章:
0
12 [报告]
发表于 2006-09-06 13:32 |只看该作者
楼上,这个没有错。

现在是低版本的GCC不会出现任何问题,2。4内核

高版本GCC3.4 /2.6内核会出现这样的问题。

看我上面的贴,只有地址返回很大的值时才会报错,用GDB跟,那个地址已经越界。

论坛徽章:
0
13 [报告]
发表于 2006-09-06 13:52 |只看该作者
原帖由 chqp 于 2006-9-6 13:04 发表
char *buffer = (char *)malloc(10);

buffer = (char *) realloc(buffer, 100); // 注意:一定要将buffer 重新赋值,因为内核可能更改了buffer值, 我估计你直接使用:  realloc(buffer, 100);  了。


你这样用是不对的.

论坛徽章:
0
14 [报告]
发表于 2006-09-06 16:00 |只看该作者
需要多一到工序,你试试看
buffer1 = (char *) realloc(buffer, 100);

论坛徽章:
0
15 [报告]
发表于 2006-09-06 16:02 |只看该作者
chqp 说的对,
buffer = (char *) realloc(buffer, 100);

论坛徽章:
0
16 [报告]
发表于 2006-09-07 10:20 |只看该作者
你程序有bug,用切片法找问题。

论坛徽章:
0
17 [报告]
发表于 2006-09-07 10:30 |只看该作者
怎么用切片法呀。谢谢。

我写了个小测试,没出现问题。

可是这个程序总是在地址由6位变成8位数时出现非法内存访问,测试程序遇到此情况没事。

论坛徽章:
0
18 [报告]
发表于 2006-09-14 10:25 |只看该作者
linternt,我最近也遇到类似的问题,不知你是否已经找到答案,很是头疼。

论坛徽章:
0
19 [报告]
发表于 2008-05-26 16:35 |只看该作者
我也遇到此问题

论坛徽章:
0
20 [报告]
发表于 2008-08-26 20:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP