1

私はそれを機能させるために今数時間努力してきました。これまでのところ、メモリリークは検出されますが、1トンが検出され、それが現実的かどうかはわかりません。また、実際にメモリリークを解決できるように、ファイルと行番号(可能であることはわかっていますが、機能させることができません)を確認したいと思います。

頻繁に呼び出されるメソッド(通常は1秒間に約60回)でメモリリークをダンプするコードを追加しました。問題がないかどうかはわかりませんが、実際には「メイン」機能がないため、難しいです。コードを配置する場所を決定します。

これが私が追加したものです:

// This part is in the includes part of the file
#define _CRTDBG_MAPALLOC
#define _CRTDBG_MAP_ALLOC_NEW
#include <stdlib.h>
#include <crtdbg.h>

#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif

// This part is in the method
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
_CrtDumpMemoryLeaks();

助けてくれてありがとう!

4

2 に答える 2

1

試す

ビジュアルリークディテクタ

http://www.codeproject.com/Articles/9815/Visual-Leak-Detector-Enhanced-Memory-Leak-Detectio

とても良い結果が得られました。

于 2012-03-16T08:55:51.140 に答える
0

crtを使用すると、アクションを実行する前と実行した後のメモリ状態を比較することができます。これを実現するには、単体テストで_CrtMemDifferenceを使用するだけです。概念は、コードのさまざまな部分を呼び出し、_CrtMemCheckpointを使用する前と呼び出し後に、アプリケーションメモリの状態を取得する単体テストを作成することです。したがって、その後、2つのチェックポイントを_CrtMemDifferenceと比較する必要があります。

于 2012-03-16T10:50:08.373 に答える