10

以前、メモリ リークなどのチェックについて質問した投稿をしました。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)

ここで大丈夫ですか?私に関する唯一のことは、まだ到達可能な部分です。それは大丈夫ですか?

みんな、ありがとう

4

3 に答える 3

11

Valgrindクイック スタートを読み、セクション 4「 Memcheck の出力の解釈」に特に注意を払い、 FAQに目を通すことをお勧めします。


その後、 How to Ask Questions The Smart Way (別名 Smart Questions) を読んで問題解決スキルを向上させ、StackOverflowなどのコミュニティ フォーラムで支援を求める方法を改善してください。より良い質問にはより良い回答が与えられます。

これは、侮辱や個人攻撃を意図したものではありませんが、より適切な質問をして、より適切な回答を得る方法を提案するものです。また、その過程で自分自身の基本的な質問に自分で答える方法を学び、全体的な取り組みをスピードアップします. 幸運を。

于 2010-03-19T18:39:22.590 に答える
7

貼り付けた出力は次のとおりです。

==2420== 合計ヒープ使用量: 82 個の割り当て、1 個の解放、2,592 バイトの割り当て

...

==2420== まだ到達可能: 81 ブロックで 2,240 バイト

82 個の割り当てと 1 個の空きブロックがあるため、最終的に 81 個のブロックがまだヒープに「到達可能」です。Valgrind FAQが述べているように、これは、コードが何らかのメモリ プール アロケータを使用しているため、メモリが未使用になるとすぐにメモリを解放せず、後で使用するために保持するか、実際にはメモリ リークである可能性があることを示している可能性があります (可能性は低いですが)。 . リンクの手順に従って、これが STL によるメモリ キャッシュの使用によるものかどうかを確認します。

于 2010-03-19T19:00:13.890 に答える
2

http://valgrind.org/docs/manual/faq.html#faq.deflostが役に立つかもしれません。

于 2010-03-19T18:35:38.727 に答える