【问题标题】:Understanding the Valgrind output [duplicate]了解 valgrind 输出
【发布时间】:2011-01-29 14:19:56
【问题描述】:

我之前发了一个帖子询问检查内存泄漏等问题,我确实说我不熟悉 linux 中的终端,但有人对我说使用 valgrind 很容易

我已经设法让它运行等,但不确定输出的含义。扫了一眼,我觉得一切都很好,但如果可能的话,我想通过你的经验来确认。输出如下

^C==2420== 
==2420== HEAP SUMMARY:
==2420==     in use at exit: 2,240 bytes in 81 blocks
==2420==   total heap usage: 82 allocs, 1 frees, 2,592 bytes allocated
==2420== 
==2420== LEAK SUMMARY:
==2420==    definitely lost: 0 bytes in 0 blocks
==2420==    indirectly lost: 0 bytes in 0 blocks
==2420==      possibly lost: 0 bytes in 0 blocks
==2420==    still reachable: 2,240 bytes in 81 blocks
==2420==         suppressed: 0 bytes in 0 blocks
==2420== Reachable blocks (those to which a pointer was found) are not shown.
==2420== To see them, rerun with: --leak-check=full --show-reachable=yes
==2420== 
==2420== For counts of detected and suppressed errors, rerun with: -v
==2420== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 13 from 8)

这里一切都好吗?唯一与我有关的是仍然可以到达的部分。可以吗?

谢谢大家

【问题讨论】:

    标签: c memory-leaks valgrind


    【解决方案1】:

    您粘贴的输出显示:

    ==2420== 总堆使用量:82 次分配,1 次释放,2,592 字节分配

    ...

    ==2420== 仍可访问:81 个块中的 2,240 个字节

    82 个分配,只有一个空闲,所以最终堆上仍有 81 个块仍然“可访问”。正如Valgrind FAQ 所述,这可能表明代码使用了一些内存池分配器,因此不会在未使用时立即释放内存,而是保留它以供以后使用,或者它实际上可能是内存泄漏(不太可能,尽管)。按照链接中的步骤检查这是否是由于 STL 使用了内存缓存。

    【讨论】:

    • 由于问题被标记为 C,我认为 C++ STL 或 String 类对于 sbsp 来说不是问题。很好的答案。
    【解决方案2】:

    我建议你停下来,阅读 Valgrind Quick Start,特别注意第 4 节“Interpreting Memcheck's output”,并查看 FAQ


    之后,我认为您可以从阅读How to s The Smart Way(又名智能问题)中受益,以提高您解决问题的能力,并提高您在StackOverflow 等社区论坛中寻求帮助的能力,更好的问题会得到更好的答案。

    这不是侮辱或人身攻击,而是关于如何更好地提出问题的建议,以便您获得更好的答案。您还将学习如何在此过程中更频繁地自己回答自己的基本问题,从而加快您的整体努力。祝你好运。

    【讨论】:

    • 如果原创者不知道手册在哪里,这样的答案是没有用的。我试图让人们从怀疑中受益,特别是因为 OP 至少试图很好地描述这个问题。如果您不熟悉某个主题,尤其是像内存管理这样潜在复杂的东西,有时技术文档可能会让人不知所措,因此他们所需要的只是推动正确的文档。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2011-12-03
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 2016-12-31
      相关资源
      最近更新 更多