Valgrind 的令人困惑的输出显示间接丢失的内存泄漏,但没有明确丢失或可能丢失

2024-02-08

我在 macos x 10.8 上运行 valgrind。 Valgrind 在启动时说

"==11312== WARNING: Support on MacOS 10.8 is experimental and mostly broken.
==11312== WARNING: Expect incorrect results, assertions and crashes.
==11312== WARNING: In particular, Memcheck on 32-bit programs will fail to
==11312== WARNING: detect any errors associated with heap-allocated data."

Valgrind 给出了这次泄漏的摘要:

"LEAK SUMMARY:
==11312==    definitely lost: 0 bytes in 0 blocks
==11312==    indirectly lost: 48 bytes in 2 blocks
==11312==      possibly lost: 0 bytes in 0 blocks
==11312==    still reachable: 45,857 bytes in 270 blocks
==11312==         suppressed: 16,805 bytes in 87 blocks"

根据 valgrinds 常见问题解答,http://valgrind.org/docs/manual/faq.html#faq.deflost http://valgrind.org/docs/manual/faq.html#faq.deflost,“间接丢失”意味着您的程序正在泄漏基于指针的结构中的内存。 (例如,如果二叉树的根节点“肯定丢失”,则所有子节点都将“间接丢失”。)如果修复“肯定丢失”泄漏,“间接丢失”泄漏应该消失。

我没有任何明显丢失的泄漏,甚至可能丢失的泄漏需要修复。我应该解决什么问题?由于 10.8 中 valgrind 的实验性质,此报告是否可能是一个错误?

我相信我正在将其编译为 64 位程序,因为编译器是 64 位编译器。


我觉得回答自己的问题很奇怪。

是的,mac 上 valgrind 的报告不正确。根据 linux 上的 valgrind,所有堆块都被释放,因此不可能发生泄漏。

我真的希望 valgrind 能够解决 mac 的问题,因为我现在主要在 mac 上进行开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Valgrind 的令人困惑的输出显示间接丢失的内存泄漏,但没有明确丢失或可能丢失 的相关文章

随机推荐