debugging - Valgrind 输出中的错误摘要?

标签 debugging memory memory-leaks valgrind kcachegrind

我看过一些关于 valgrind 的帖子,但没有一个帖子帮助我理解 valgrind 输出的解释。
我用 valgrind 运行了两个程序(都有内存泄漏)

测试 1 的示例输出

==20422== LEAK SUMMARY:
==20422== definitely lost: 448 bytes in 3 blocks
==20422== indirectly lost: 786,460 bytes in 1 blocks
==20422== possibly lost: 1,576,052 bytes in 46 blocks
==20422== still reachable: 1,077,107 bytes in 2,333 blocks
==20422== suppressed: 0 bytes in 0 blocks
==20422== Rerun with --leak-check=full to see details of leaked memory
==20422==
==20422== For counts of detected and suppressed errors, rerun with: -v
==20422== ERROR SUMMARY: 98307 errors from 5 contexts (suppressed: 2 from 2)
Killed

测试 2 的输出
==20875== HEAP SUMMARY:
==20875== in use at exit: 1,059,198 bytes in 2,047 blocks
==20875== total heap usage: 3,019 allocs, 972 frees, 4,496,090 bytes allocated
==20875==
==20875== LEAK SUMMARY:
==20875== definitely lost: 328 bytes in 2 blocks
==20875== indirectly lost: 0 bytes in 0 blocks
==20875== possibly lost: 1,600 bytes in 5 blocks
==20875== still reachable: 1,057,270 bytes in 2,040 blocks
==20875== suppressed: 0 bytes in 0 blocks
==20875== Rerun with --leak-check=full to see details of leaked memory
==20875==
==20875== For counts of detected and suppressed errors, rerun with: -v
==20875== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)

如果您查看错误摘要,一个输出表示存在错误,另一个表示没有错误(最终两者都有泄漏)

我的问题是 - - 在 valgrind 中什么算作错误? (valgrind 手册没有帮助我)

最佳答案

内存泄漏不被视为错误,它们不会影响程序的逻辑。

错误是诸如无效读取和写入之类的事情。

根据评论更新:测试 1 中的无效读写是针对 5 个不同的内存区域,访问次数为 98307 次。

查看泄漏,测试 1 中的大量间接损失可能表明链接数据结构仅删除了根。

测试 2 中的泄漏还不错。由于 valgrind 建议使用 --leak-check=full 重新运行,这应该表明是哪位代码导致了问题。

可以在 here 中找到对错误的完整解释。

关于debugging - Valgrind 输出中的错误摘要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398796/

相关文章:

python - 向 Python 打印添加日期时间戳

java - Java 程序最大内存只有 880 MB

java - 在 Android 中从内存中加载声音

delphi - 内存泄漏GETIPFROMHOST

android - Karbonn A18 未在 Eclipse 中检测到以进行调试

objective-c - 使用 NSLog 进行调试

iOS-将图像制作为视频时,CVPixelBufferCreate 内存无法正确释放

web - WebAssembly 程序会泄漏内存吗?

c++ - 如果引用应该保留,不会在析构函数中删除指针会导致内存泄漏吗?

debugging - 在 Visual Studio Code 中查看返回值