1

C++プログラムでmemleaksを識別しようとしています。VisualStudio2008を使用しています。

メモリ割り当てにmallocではなく新しいものを使用しながらmemleaksを識別することを扱うチュートリアルをいくつか見つけました。これは、メインの上に定義したものです。

#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

__FILE__しかし、私は問題を見つけたと思います__LINE__。「RMB->定義に移動」または「RMB->宣言に移動」をクリックする__FILE__ か、次のように表示され__LINE__ ます。

the symbol '__FILE__' is not defined 

the symbol '__LINE__  ' is not defined 

それぞれ。

これをどのように解決すればよいですか?

4

2 に答える 2

0

シンボル__FILE____LINE__は、コンパイラによって常に定義される必要があります。そうでない場合は、それらを禁止するためにいくつかの特別なオプションを使用している必要があります。

一方、投稿したコードは標準ライブラリでは使用できないため、避ける必要があります。これは、メモリリークを見つけるための良い解決策ではありません。

編集:投稿を読み直すと:定義を表示するためにデバッガーを頼りにしているようです。コンパイラによって自動的に生成され、コンパイル中に変更されるため、できません。一方、表示されるエラーは、マクロがキーワードを再定義するという事実と非常に互換性があり、標準のライブラリコードを壊します。

于 2012-04-13T08:39:29.543 に答える
0

あなたは間違った木を吠えています。プリプロセッサによって処理されます__FILE____LINE__それらは定義されるべきではありません。これらのエラーを生成する実際のコードを示していないため、どのように対処できるかわかりません。

于 2012-04-13T08:37:41.547 に答える