无论我运行 Valgrind 的什么程序都会告诉我 3 个 block 中有 72 个可能丢失的字节,即使使用像这样的简单程序也是如此:
int main(void)
{
printf("Hello, World!\n");
return 0;
}
您知道这是否是 Mac OS sierra 上的 Valgrind 错误吗?
我怎么会用这样的程序泄漏内存?
最佳答案
如果任何预加载的库(例如通过 LD_PRELOAD
)或链接的 C 运行时的任何部分存在内存泄漏,这很可能会发生。
还有一些由 CRT 执行的内存分配从未有意释放,但通常这些只是一次性的事情,每个进程只发生一次。
Valgrind 无法可靠地区分您的应用程序的组成部分和非组成部分。您只能从分配内存的位置检查堆栈跟踪,并决定那是否是您的域。
关于c - Valgrind 可能会在简单程序中丢失内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254173/