有关munmap_chunk() invalid pointer错误

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

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

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

void fun(type param){

...

if(...){

...

for(;;){

type param = ...;

...

}

}

}


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

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

你可能感兴趣的:(有关munmap_chunk() invalid pointer错误)