【问题标题】:Valgrind shows memory leak on empty program on Mac OSX 10.8Valgrind 在 Mac OSX 10.8 上的空程序上显示内存泄漏
【发布时间】:2013-08-15 04:47:48
【问题描述】:

使用 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

【问题讨论】:

  • 什么是ImageLoaderMach0
  • 我不确定。我在上面收到了一大堆错误信息。
  • @Alex Mach 是该操作系统上底层内核的名称。 Mach-O 是可执行格式的名称 (en.wikipedia.org/wiki/Mach-O )。 “ImageLoader”我将留给您解释。请注意,“ImageLoaderMach0”不是 OP 输入的一部分,本质上,OP 提出了这个问题,因为他不完全知道那段代码的作用(给予或接受)。
  • 可能,您将不得不抑制这种内存泄漏,因为它们是您代码中的第三方或者不是由您维护的。不过,这很奇怪。 (wiki.wxwidgets.org/Valgrind_Suppression_File_Howto)
  • Valgrind 对 Mac OSX 10.8 的支持仍然有限。 ImageLoaderMachO::doInitialization... 应该在您的抑制文件中。

标签: c macos valgrind memory-leaks


【解决方案1】:

这不是您需要担心的内存泄漏。 ImageLoader 是 OS X 运行时的一部分,负责加载二进制文件和动态库。它在初始化期间分配了一次内存并忘记了它,但它是无害的,因为它是只分配一次的一小块内存。它做了很多 Valgrind 不喜欢的事情,但并不是不正确的。你应该add these to your suppression file

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 链接不再有效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 2019-02-10
      • 1970-01-01
      相关资源
      最近更新 更多