C++: munmap_chunk(): invalid pointer

指针问题绝对是C++ 中最令人头疼的问题之一。 最近在写一个程序,编译通过,运行的时候出现这个错误。很明显是指针的问题,并且确定是在 delete[] 一个指针的时候发生的错误(可以用gdb调试进行错误定位),但就是不知道问题出在哪儿。网上基本给出两种意见:

  1. 指针在运行过程中被修改。
  2. 指针在delete[] (free)之前已经被 delete[] (free)过了。

仔细检查之后发现并不存在这俩问题。最后经过逐行排查,发现是在给指针所指向的数组赋值的时候访问越界,给超过边界的内存赋值。但是访问越界的时候不会直接报出错误,等到delete的时候程序认为指针已经被修改了(所指向的内存发生了变化),所以会报错。这么来看这个问题本质上还是属于上面提到的第一种,只是比较隐蔽和直觉相悖,难以发现。

访问指针也有可能修改指针的,切记。

常见指针错误一定要熟悉并尽可能避免,详细总结可参考下面文章:

参考链接:

C/C++常见指针错误 and 内存访问越界


如果你对本文有任何疑问或建议,欢迎联系我。本博客所有文章除特别声明外,均为原创文章,未经授权请勿转载!

Windows下dll知识合集 上一篇
linux下多线程/并行执行matlab脚本 下一篇

 目录