我设法让它运行等但不确定输出意味着什么。瞥了一眼,对我来说一切看起来都不错,但是如果可能的话,我想通过你经验丰富的人来确认。输出如下
^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)
这里好吗?关于我的唯一问题是仍然可以到达的部分。那可以吗?
谢谢大家
答案 0 :(得分:8)
我建议你停下来,阅读Valgrind Quick Start,特别注意第4节“Interpreting Memcheck's output”,并查看FAQ。
之后,我认为您可以从阅读How to Ask Questions The Smart Way(又称智能问题)中获益,以提高您的解决问题的能力,并改善您在StackOverflow等社区论坛中寻求帮助的机会,在这些论坛中可以获得更好的问题有更好的答案。
这不是针对侮辱或人身攻击,而是关于如何更好地提出问题的建议,以便您可以获得更好的答案。您还将学习如何在此过程中更频繁地回答您自己的基本问题,从而加快您的整体工作。祝你好运。
答案 1 :(得分:7)
您粘贴的输出显示:
== 2420 ==总堆使用量:82个分配,1个释放,分配2,592个字节
...
== 2420 ==仍然可以访问:81个块中的2,240个字节
82个分配,只有一个空闲,所以最后还有81个块在堆上仍然“可达”。作为Valgrind FAQ状态,这可能表明代码使用了一些内存池分配器,因此一旦它未使用就不释放内存,而是保留它供以后使用,或者实际上可能是内存泄漏(不太可能) ,但是)。按照链接中的步骤检查这是否是由于STL使用内存缓存。
答案 2 :(得分:2)