【问题标题】:Glibc detected malloc() memory corruption (0xb6179bb8) when calling new keyword C++Glibc 在调用新关键字 C++ 时检测到 malloc() 内存损坏 (0xb6179bb8)
【发布时间】:2010-10-01 05:04:20
【问题描述】:

我的程序运行到调用 new 关键字会导致上述错误的地步。即char* a = new char[100]。错误是可重现的,并且每次都可以重现。我运行程序直到调用 new 关键字。似乎内存位置已损坏,但我不确定他的问题是什么。

此错误的可能原因是什么?

【问题讨论】:

  • 错误的原因是您在代码中做了一些不正确的事情。由于您还没有发布任何代码,因此不可能比这更具体。
  • 看看你的代码中之前的内存分配,可能有问题。或者您可能会在分配之前破坏堆写入不适当的地址。
  • 0xb6179bb8 是...?让我在我的大错误书中查一下。更严重的是 - 这很可能是堆内存使用的另一个错误:多次删除/释放内存,不匹配的单变量和数组新/删除,覆盖您一直保留的内存块之前或之后的内存,但可能是任何其他可能导致未定义行为的行为。您通常可以使用 valgrind 或 purify 之类的工具来找到您进行某些非法操作导致此问题的点......

标签: c++ c glibc


【解决方案1】:

此错误表示您已损坏系统内存管理器的簿记数据。 这种损坏通常是指针使用不正确的结果,例如

  • 使用未初始化的指针
  • 在它引用的内存被释放后使用指针(释放可能通过另一个指针发生)
  • 在数组边界之外写入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2015-12-19
    • 2013-10-05
    • 2020-08-02
    • 2011-06-04
    • 1970-01-01
    相关资源
    最近更新 更多