有关munmap_chunk() invalid pointer错误

调程序的过程中不断碰到这个错误,编译时候没有错误,运行时出错。

网上查找的结果是,与指针或者地址释放的过程有关的错误,对同一个对象执行了两次free()操作。但是仔细看自己的代码,也看不出什么问题。

后来发现,是因为一个函数中自己创建了一个与输入参数同名的变量,类似下面的形式:

void fun(type param){

...

if(...){

...

for(;;){

type param = ...;

...

}

}

}


函数嵌套比较深,习惯性的给每个type类型都默认的称为param名字,比如我总是管message类型起名叫msg这样。我的理解是,嵌套在内层新建的param,会覆盖形参。在离开fun块的时候,形参的函数名仍在,指向的地址仍在,但是指向的那个空间已经被另外一个param给释放了,就引发了标题中提到的错误。

所以给我们的教训是,应当谨慎给变量取名,取名之前请仔细查看函数形参列表等会发生冲突的位置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值