free出错

这是今天碰到的一个例子,使用malloc()申请了一片内存,却在free的时候意外发现释放出错。我百思不得其解,因为同样申请内存的另一个变量释放内存的时候一点问题都没有,而且这两者操作基本相同,申请,使用,再释放。经过调试,发现程序一直没错,直到free的时候,程序直接终止。后来经过查free()的实现原理的时候,我找到了问题所在。free的原理是,申请的内存片段之前存放着相应的信息,这个信息是关于这个内存大小以及一些标志。如果在内存使用的时候,不经意间修改了这个信息的内容,就可能导致无法释放内存。而我的问题就是,申请的内存当数组用的时候,读写越界了,但是系统不会给我提示,于是不知道什么时候就把那个信息改写了,改写时不会有问题,但是到释放的时候,系统发现问题,直接异常,中断了程序。
————————————————
版权声明:本文为CSDN博主「dahlwuyn」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dahlwuyn/article/details/12778515

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值