【问题标题】:I do not know 'glibc detected' in C我不知道 C 中的“检测到 glibc”
【发布时间】:2012-06-07 13:25:56
【问题描述】:

当我结束我的程序时,我发现像这样的“检测到 glibc”消息。 但是,我不知道这是错误还是警告,或者……有人可以解释一下这条消息的含义以及我该怎么做吗?

【问题讨论】:

  • 你能发布你的代码吗?这会有所帮助..
  • 错误不是“检测到 glibc”,而是该消息后面的内容。让我们看一些代码。 (哦,对于未来:图片并不是真正适合传达文本信息的方式)。

标签: c unix glibc


【解决方案1】:

这意味着您的程序中有堆损坏。您可能使用malloc 分配了一些内存,但写入超出了实际范围,从而破坏了堆。当你调用free 时,glibc 会检测到损坏并报告它(具体来说,下一个空闲块的大小会被覆盖)。

你绝对应该解决这个问题。 Valgrind 可以极大地帮助追踪实际导致堆损坏的代码。

【讨论】:

    【解决方案2】:

    您在程序中的某处损坏了堆。您可能已经使用reallocmalloc 编写了外部内存。但是当你试图释放内存时,malloced 内存被释放了,但是你写的内存也没有,这导致你得到的损坏错误。有一些工具,例如:Debugging for Windows 以及 electricfencedmallocvalgrind。此外,您可能需要检查循环,因为简单的while loopfor loop 可能由于未正确检查循环中的边界或限制而导致错误。

    【讨论】:

      【解决方案3】:

      你破坏了堆,所以你在内存管理方面犯了一个错误;使用Valgrind 之类的工具来查找和修复此类错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-21
        • 1970-01-01
        • 2011-01-15
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        • 2012-02-03
        相关资源
        最近更新 更多