我不知道在C中'检测到'glibc'

时间:2012-06-02 18:39:56

标签: c unix glibc

当我结束我的程序时,我发现了'glibc detected'这样的消息。 但是,我不知道这是错误还是警告,否则..有人可以解释一下这条消息的含义以及我该怎么办?

enter image description here

3 个答案:

答案 0 :(得分:8)

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

你一定要解决这个问题。 Valgrind可以帮助您追踪实际导致堆损坏的代码。

答案 1 :(得分:4)

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

答案 2 :(得分:3)

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