web-dev-qa-db-ja.com

Windows x64でメモリリークをチェックするための無料のアプリケーション?

上司からAPIのメモリリークをチェックするように割り当てられました。アプリケーションはCおよびC++で作成されます。そのため、malloc&newを使用してメモリが割り当てられる可能性があります。 64ビットWindows7のデバッガーモードでVisualStudio 2010のメモリリークを確認したい。タスクマネージャーの問題は、安定した読み取り値が表示されないことです(メモリが少しずつ増減します)。また、APIの実行前後の違いはわずかです。したがって、サイクルごとにx個のメモリがリークしていると断言することはできません。

私はインターネットで検索しましたが、Linuxにはこのための優れたツールがあることがわかりました。ただし、要件に合った信頼性の高いツールが必要です(Windows7)。私はこれらに出くわしました:

http://winleak.sourceforge.net/

http://sourceforge.net/projects/duma/?source=recommended

ここで述べたように:

Windowsのメモリリークを確認してください

ツール

http://technet.Microsoft.com/en-us/library/bb457063.aspx

私の要件には役に立ちません。これをリクエストしているお客様は当社にとって非常に重要であるため、良いツールを提案していただければ非常に助かります。ありがとうございました!

13
Cool_Coder

ビジュアルリークディテクタ を使用することをお勧めします。 Windowsにvalgrindを使用することもできます(ただし、ほとんど成功しませんでした) Dr。Memory も何度か役に立ちました。

編集:また見てください ここ

7

CRTライブラリには、独自のメモリリーク検出メカニズムがあります。出力は、Visual Leak Detectorが提供するものほど詳細ではありませんが、VLD(プログラムの終了後数十分間簡単に実行される)よりもはるかに高速です。

CRTメモリリーク検出を有効にするには、stdafx.hの先頭(または他の適切な場所)に以下を配置します。

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

プログラムの出口点の直前に次を追加します。

_CrtDumpMemoryLeaks();

_CrtDumpMemoryLeaks()が呼び出されると、リークされたすべてのメモリが出力ウィンドウに出力されます。

[〜#〜] msdn [〜#〜] の詳細情報。

注:これを使用したとき、_CRTDBG_MAP_ALLOCの最初にstdafx.hを定義しましたが、行番号なしでより詳細でない出力しか得られませんでした。

4
Helge Klein