1

32 ビットの Visual Studio 8.0 C++ Windows DLL (非 .NET) が、予想よりも多くのメモリを消費しているようです。使用されているメモリの合計の 1 つの数字だけでなく、メモリがどこに向かっているのかを正確に判断したい (タスク マネージャーやリソース モニターのメモリ使用量の値には関心がない)。16 ビット時代には、HeapWalker は非常に役に立ち、BITMAP ハンドルを選択して、そのグラフィック コンテンツを表示することさえできました。.MAP ファイルを読み込んでさまざまなセクションを追加する方法を覚えようとしていますが、ドキュメントがほとんどなく、この手法がどれほど正確かはわかりません。誰かアドバイスはありますか?

4

1 に答える 1

2

DLL のさまざまなセクションのサイズを確認する必要がある場合は、dumpbin.exe を使用できます。これは、DLL と実行可能ファイルを検査するためのコマンド ライン ツールです。実行する前に、必ず vcvars32.bat を実行してください。

DLL の実際のメモリ消費量を確認するには、umdh.exe から始めることをお勧めします。これは、Microsoft の windbg の一部として出荷されます。ファイルを pdb でビルドする限り、アプリケーション内のシンボルを解決できます。その後、メモリのスナップ ショットを数枚撮って、リークを探すことができます。すべての割り当ての完全なダンプを実行して、メモリが割り当てられている場所と割り当てられている量を確認することもできます。

于 2009-03-30T19:44:23.590 に答える