Valgrind在Mac OSX 10.8上显示空程序存在内存泄漏

7

使用brew安装Valgrind。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    return 0;
}

gcc -g -o hello hello.c

valgrind --tool=memcheck --leak-check=yes ./hello

enter image description here


ImageLoaderMach0 是什么? - Alex
我不确定。我上面有一大堆错误信息。 - Pritesh Acharya
1
@Alex Mach是该操作系统底层内核的名称。Mach-O是可执行文件格式的名称(http://en.wikipedia.org/wiki/Mach-O)。“ImageLoader”我将留给您自己解释。请注意,“ImageLoaderMach0”不是OP的输入的一部分,基本上,OP之所以提出这个问题,是因为他并不完全知道那段代码的作用(多少有点)。 - Pascal Cuoq
可能你需要抑制这些内存泄漏,因为它们是你代码中的第三方或者不是由你维护的。虽然这很奇怪。(http://wiki.wxwidgets.org/Valgrind_Suppression_File_Howto) - boaz_shuster
1
Valgrind在Mac OSX 10.8上的支持仍然有限。ImageLoaderMachO :: doInitialization...应该在您的抑制文件中。 - PurpleAlien
@PurpleAlien,你应该将你的评论提交为答案。 - Cargo23
3个回答

6
这不是你需要担心的内存泄漏。 ImageLoader 是 OS X 运行时的一部分,负责加载二进制文件和动态库。它在初始化期间只分配了一些内存并且忘记了它,但这没有什么危害,因为只是分配了一小块内存而已。它做了一些 Valgrind 不喜欢的事情,但这些并不是错误的。你应该将这些添加到你的抑制文件中

2

Valgrind对Mac OSX 10.8的支持仍然有限。 ImageLoaderMachO :: doInitialization ...应该在您的抑制文件中。


1
另一个答案是正确的,我碰巧遇到了同样的问题并且在创建抑制文件时遇到了一些麻烦。因此,为了帮助其他人,这里是我为Mac OS X Mountain Lion生成的最小化抑制文件: https://www.dropbox.com/s/2btyqnf8uesgsis/minimal.supp

1
链接已失效。 - JoshBramlett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接