c - Valgrind 可能会在简单程序中丢失内存

标签 c valgrind

无论我运行 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/

相关文章:

c - realloc() C语言改变int数组中的值

c - 调用不同函数时,堆分配创建了未初始化的值

c++ - Valgrind 是否/可以使用多个处理器?

c++ - Valgrind 提示 std string 的新运算符可能存在内存泄漏

c - 将参数作为 void* 传递是否合法?

我可以从 C 中的变量中检索数据类型吗?

c++ - 是否可以在 C 中使用指针来访问文本或内核部分?

c - 打印字符数组时 Valgrind 读取大小为 8 的内容无效

c++ - arduino,函数返回字符数组

CHIP-8 SDL 渲染问题