私は C++ アプリケーションを持っています。タスク マネージャーを観察すると、アプリケーションのメモリ使用量が徐々に増加していることがわかります。
ソース コードを手動でチェックし、 Visual C++ 用の Visual Leak Detectorを使用してメモリ リークを見つけましたが、何も見つかりませんでした。100% メモリ リークがあり、それを見つけることができなかったのでしょうか、それともタスク マネージャーが間違った方向に導く可能性はありますか?
私は C++ アプリケーションを持っています。タスク マネージャーを観察すると、アプリケーションのメモリ使用量が徐々に増加していることがわかります。
ソース コードを手動でチェックし、 Visual C++ 用の Visual Leak Detectorを使用してメモリ リークを見つけましたが、何も見つかりませんでした。100% メモリ リークがあり、それを見つけることができなかったのでしょうか、それともタスク マネージャーが間違った方向に導く可能性はありますか?
そうではありません。メモリ統計にはいくつかのオプションがあり (View + Columns を使用)、バージョンは重要ですが、デフォルト ビューにはワーキング セットが表示されます。プログラムが実際に使用する仮想メモリの量は、RAM にあります。これは非常に急速に変化する可能性がある統計的な数値です。たとえば、アプリのメイン ウィンドウを最小化するだけです。
表示できる VM サイズも大きくありません。この数には、空きヒープ ブロックが含まれます。実際に使用中のメモリを取得するのは非常に難しい作業です。HeapWalk の SDK 記事の小さい字を読んでください。
大量に漏れない限り、漏れ検出には役に立ちません。
タスク マネージャーの代わりにProcess Explorerを使用しています。CPU/メモリ使用量の履歴グラフを表示します
拡張タスク マネージャー http://www.warecase.com/products.aspを使用しています。
これは、特にスレッドが存在するかどうかなどのデバッグ目的で役立ちます。プロセスまたはアプリケーションに pdb がある場合、多くの情報を提供できます。
おそらく、DevPartner を使用してメモリ リークを特定できます。とても便利です。