Valgrind可能在简单程序中丢失了记忆

时间:2017-09-16 12:57:41

标签: c valgrind

无论我运行什么程序,Valgrind都会告诉我,即使有一个简单的程序,也可以在3个区块中丢失72个字节:

int main(void)
{
    printf("Hello, World!\n");
    return 0;
}

你知道这是否是Mac OS sierra上的Valgrind错误?

我怎么能用这样的程序泄漏内存?

1 个答案:

答案 0 :(得分:2)

如果任何预加载的库(例如,通过LD_PRELOAD)或链接的C运行时的任何部分都有内存泄漏,则很可能发生这种情况。

CRT还会执行一些内存分配,这些分配永远不会故意释放,但通常这些只是一次性事情,每个进程只发生一次。

Valgrind无法可靠地区分您的应用程序的哪些部分。您只能检查分配内存的堆栈跟踪,并确定这是否是您的域。