15

上司からAPIのメモリリークをチェックするように割り当てられました。アプリケーションはCおよびC++で作成されます。そのため、malloc&newを使用してメモリが割り当てられる可能性があります。64ビットWindows7のデバッガーモードでVisualStudio2010のメモリリークを確認したい。タスクマネージャーの問題は、安定した読み取り値が表示されないことです(メモリが少しずつ増減します)。また、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

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

4

2 に答える 2

9

何度か役に立ったので、視覚的なリークディテクタを使用することをお勧めします。また、Windowsにvalgrindを使用することもできます(ただし、これを行うことはほとんど成功していません)。メモリー博士も何度か助けてくれました。

編集:こちらもご覧ください

于 2013-01-09T13:55:36.077 に答える
4

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た。

于 2013-12-18T21:06:22.903 に答える