C# および C++ で記述されたアプリケーションのメモリ リークを調査していました。PerfMon ログと WinDbg/SOS デバッグを使用していくつかの C++ コンポーネントに分離したら、UMDH (+ust で有効化された gflags) を使用してスナップショットを比較し、どのヒープ割り当てがメモリをリークしているかを見つけようとしました。
最後に、コードの手動レビューによってリークが発見されました。以下のサンプル コード スニペット。
char *p = new char[size];
// use the pointer
delete p; <---- MEMORY LEAK
なぜUMDHがこれをキャッチしなかったのか疑問に思っていましたか? UMDH は、これを比較ログの問題として報告していません。WinDbg ヒープ コマンドは、リークを指摘するのに役立ちましたか?