C语言中free()出错

这是今天碰到的一个例子,使用malloc()申请了一片内存,却在free的时候意外发现释放出错。我百思不得其解,因为同样申请内存的另一个变量释放内存的时候一点问题都没有,而且这两者操作基本相同,申请,使用,再释放。经过调试,发现程序一直没错,直到free的时候,程序直接终止。后来经过查free()的实现原理的时候,我找到了问题所在。free的原理是,申请的内存片段之前存放着相应的信息,这个信息是关于这个内存大小以及一些标志。如果在内存使用的时候,不经意间修改了这个信息的内容,就可能导致无法释放内存。而我的问题就是,申请的内存当数组用的时候,读写越界了,但是系统不会给我提示,于是不知道什么时候就把那个信息改写了,改写时不会有问题,但是到释放的时候,系统发现问题,直接异常,中断了程序。

由此得来的教训就是,C语言中访问数组一定要注意越界的问题!或者,使用Java吧,没有内存管理真的是方便省事好多

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值