一部のプログラムでは、割り当てられたメモリの一部がまったく破棄されませんが、プログラムの実行時間全体に必要です。したがって、一般的に安全であると考えられています。
しかし、プログラムの実行時間全体を意図していないが、開発者のミスのために破棄されていない他のオブジェクトがあります。これらは、対処する必要がある実際のメモリ リークです。
次の Valgrind コマンドを実行すると、プログラムの実行が終了した後の合計リークのみが表示されます。したがって、上記の 2 つのシナリオを Valgrind リーク チェックの出力と区別する方法を誰かが明確にすることができます。
メモリ リークを検出するために使用したコマンド。
valgrind --log-file=valgrind_output.txt --tool=memcheck --leak-check=yes ./MyTestProgram
実行終了時の典型的な出力。
==10108== LEAK SUMMARY:
==10108== definitely lost: 392,323 bytes in 1,164 blocks
==10108== indirectly lost: 178,120 bytes in 4,283 blocks
==10108== possibly lost: 170,155,118 bytes in 3,347,087 blocks
==10108== still reachable: 263,778,326 bytes in 3,935,669 blocks
実行時に現在リークされているメモリを検出できる、IBM Purify ツールの Tap のような Valgrind の機能はありますか?