在 Valgrind 中是不是需要处理仍然可访问的内存?

Posted

技术标签:

【中文标题】在 Valgrind 中是不是需要处理仍然可访问的内存?【英文标题】:Do Still Reachable memory need to be tended to in Valgrind?在 Valgrind 中是否需要处理仍然可访问的内存? 【发布时间】:2012-09-15 03:03:39 【问题描述】:

我已经完成了我的 C 程序并消除了所有明确的、间接的和可能丢失的泄漏,但现在我遇到了大约 6064 字节的可访问内存。

问题是当我使用 valgrind 尝试搜索它时,我基本上得到了一堆乱码,我认为我没有在我的代码中直接使用过许多对“ImageLoader”的引用。唯一的其他是显示 printf 语句的行号。

所以基本上我想知道是否有更好的方法来查找和消除仍然可以到达的泄漏?或者如果我什至需要?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

仍然可以访问的内存通常没什么好担心的,当内存仍然可以访问时,您的程序无论如何都会关闭,因此操作系统会清除这些内存。

但是,仍然可以访问的内存可能会隐藏您的外部资源需要在程序退出之前进行适当清理的情况。如果您的程序不使用任何外部资源,那么您通常无需担心。

仍然可访问的内存通常位于主函数、全局或静态变量中。

【讨论】:

以上是关于在 Valgrind 中是不是需要处理仍然可访问的内存?的主要内容,如果未能解决你的问题,请参考以下文章

内存泄露检测工具Valgrind

程序是不是需要退出 Valgrind 才能工作?

Valgrind 标志,调试与发布编译

valgrind/callgrind 可以在发布的可执行 C++ 程序上工作吗?

Valgrind - callgrind Profiler:如何知道哪个函数需要更多时间

valgrind 是不是在 Debian Wheezy 上捕获 Qt 4.8 在极简主义应用程序中泄漏内存?