私のC++プログラムでmemleakを特定しようとしています。新しいなく、malloc関数を使用している間、私は、メモリ割り当てのために、2008年Visual Studio 2008でmemリークが検出されましたが、シンボル '__FILE__'は定義されていません
私はmemleaksを特定して対処するいくつかのチュートリアルを発見したのVisual Studioを使用し、これは私が私のメインの上に定義したものです:
#define __STDC_CONSTANT_MACROS
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
残念ながら私はあなたがここで見ることができ、エラーのトン、取得:http://pastebin.com/9ax90VTg
をしかし、私は問題を発見したと思う:neighter __FILE__
も__LINE__
定義されています。私は "RMB->は定義に行く" OR __FILE__
または__LINE__
の "RMB->宣言に行く" をクリックすると私が取得:
the symbol '__FILE__' is not defined
と
the symbol '__LINE__ ' is not defined
。
どうすれば解決できますか?
次に良い解決策は何ですか?私は正確な線や、少なくとも漏れの原因となる方法を知る必要があります。 – user1331072
@ user1331072最良の解決策は、valgrindのような外部ツールのようなものです。あるいは、グローバルな 'operator new'と' operator delete'(あるいは実際には少なくとも 'malloc'と' free')の代わりに書くことができます。スタックウォークバックを取得するには、プラットフォームに依存するコードが必要ですが、一般的に難しくありません。それを解釈する方がより複雑です:私のバージョンの 'operator new' /' delete'は単に戻りアドレスを16進数で出力し、これらを手作業で利用してプロセスのマップでそれらを探します。 –