1

スマート ポインターを使用したメモリ リークについて、数日前に投稿しました。これで、どのオブジェクトがメモリ リークを起こしているかを突き止めることができましたが、どこからメモリ リークを起こしているかを突き止めることはできません。

ここで述べたのと同じコードを使用しています 参照カウントオブジェクトでのメモリリークの検出

私は多くのコメントを読みましたが、どれも適切に説明していません。マクロFILELINEを使用してみました。どちらも refmanager class の file と line を出力します。

この問題をデバッグする良い方法はありますか?良い例も教えてください。

4

2 に答える 2

1

最も簡単な方法は、おそらくValgrind(LinuxおよびMacの場合)およびWindowsの同様のツールを使用することです。

スマートポインターのコンストラクターで、バックトレース(LinuxおよびMacでは関数backtrace()関数を使用)またはWindowsのdbghelp.dllから同様の関数を取得し、割り当て時にバックトレースをどこかに保存して、上のバックトレースを削除することもできます。割り当て解除。次に、終了時に残りのすべてのバックトレースを印刷します。

于 2012-10-15T19:44:49.370 に答える
0

Windows では、Visual Studio 2015 の新しいメモリ診断ツールを使用できます。

于 2016-02-01T13:44:06.107 に答える