【发布时间】:2010-01-27 04:15:15
【问题描述】:
Valgrind 为我的代码提供了以下泄漏摘要。但是,我已经释放了所有 malloc 的内存。这是一件坏事,还是正常的?我的程序在 c 中。
==3513== 泄漏摘要:
==3513== 肯定丢失:0 个块中的 0 个字节。
==3513== 可能丢失:0 个块中的 0 个字节。
==3513== 仍可访问:1 个块中的 568 个字节。
==3513== 抑制:0 个块中的 0 个字节。
【问题讨论】:
-
这些可能是libc中的全局变量,但是没有看到代码谁也说不出来。
-
好吧,我有 99% 的把握我没有内存泄漏,除非我没有专门 malloc 的东西可能需要被释放。如果 libc 全局变量是一种明显的可能性,那么我会同意。
-
这 568 个字节没有泄漏,但它们是从某个地方指向的,这可能意味着您冒着双重释放()等风险。
-
我又检查了一些代码,发现问题在于我使用
close()而不是fclose()来关闭文件。使用fclose()后,still reachable消失了。感谢您的所有帮助。 -
使用 VLD 或 Deleaker 不用担心。
标签: c memory-leaks valgrind memcheck