Valgrind的输出显示间接丢失的内存泄漏,但没有明确丢失或可能丢失
Confusing output from Valgrind shows indirectly lost memory leaks but no definitely lost or possibly lost
我在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"
根据valgrindesfaq, http://valgrind.org/docs/manual/faq.html#faq.deflost,"间接丢失"意味着你的程序在一个基于指针的结构中泄漏内存。(例如,如果二叉树的根节点"绝对丢失",则所有子节点将"间接丢失"。)如果你修复了"绝对丢失"的泄漏,"间接丢失"的泄漏就会消失。
我没有任何明确丢失的泄漏或甚至可能丢失的泄漏修复。我该怎么补救?这个报告可能是10.8中valgrind的实验性质导致的bug吗?
我相信我将此编译为64位程序,因为编译器是64位编译器
我觉得回答自己的问题很奇怪。
是,mac上valgrind的报告不正确。根据linux上的valgrind,所有堆块都被释放了,所以没有泄漏的可能。
我真的希望valgrind修复mac的问题,因为我现在主要是在mac上开发。
Valgrind已更新使用(如果使用自制程序):
brew unlink valgrind
brew install valgrind
还有,你瞧:
==23998== LEAK SUMMARY:
==23998== definitely lost: 0 bytes in 0 blocks
==23998== indirectly lost: 0 bytes in 0 blocks
==23998== possibly lost: 0 bytes in 0 blocks
==23998== still reachable: 76,800 bytes in 2 blocks
==23998== suppressed: 58,420 bytes in 359 blocks
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- valgrind-hellgrind与泄漏检查的结果不同
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 从构造函数抛出异常时如何克服内存泄漏
- 直接显示手动图形内存泄漏
- Valgrind 在 std::make_unique 中显示内存泄漏
- Valgrind 在主机名命令输出中显示内存泄漏
- 可视化泄漏检测器(VLD)显示空的调用堆栈
- C ++ Valgrind 在 Hello World 中显示内存泄漏
- 如何使用 DrMemory 在 C++ 中显示和报告内存泄漏
- 为什么valgrind显示泄漏,即使包含动态分配对象的向量被释放
- 即使修复了漏洞,Valgrind仍然显示相同的内存泄漏
- C++内存泄漏未正确显示
- Valgrind 在 unittest-cpp 库中显示内存泄漏
- Valgrind的输出显示间接丢失的内存泄漏,但没有明确丢失或可能丢失
- 内存泄漏,在 OOM 时不会崩溃,也不会显示在地块/瓦尔格林德