c/c++语言开发共享调用free()时损坏的未分类块

*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x00000000007646b0 *** *** glibc detected *** ./a.out: malloc(): memory corruption: 0x00000000007635a0 *** 

我收到了上述错误。 但是我确定我在释放后没有使用内存。 为什么我会收到上述错误?

    所有堆都存储着某些类型的元数据。 当你执行malloc或free时,堆通常会在堆上执行一些簿记function。 如果它在元数据中检测到完全意外的事情,它通常会崩溃。

    正常堆操作极不可能导致此类问题,因此您的程序最有可能是原因。 由于您的程序可以访问进程中的所有内存,包括堆元数据,因此您的程序可能会意外覆盖某些元数据。

    可能的原因是写入超出分配缓冲区的末尾。 很可能允许这种写入,并且极有可能破坏堆元数据。 当堆检测到这种情况时,您的程序通常会中止。

    可能是你试图用一个没有正确指向动态分配内存的指针释放。

      以上就是c/c++开发分享调用free()时损坏的未分类块相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545779.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐