Visual Studio 2008检测到内存泄漏,未定义符号“__FILE__”

时间:2012-04-13 08:32:01

标签: c++ windows visual-studio-2008 winapi

我正在尝试在我的c ++程序中识别memleaks。我使用的是Visual Studio 2008。

我找到了一些关于识别memleaks的教程,同时使用new而不是malloc来进行内存分配,这就是我在主要内容中定义的内容:

#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-&gt;转到定义”或“{ - 1}}或__FILE__上的”RMB-&gt;转到声明“时,我得到:

__LINE__

the symbol '__FILE__' is not defined 

分别

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你正在咆哮错误的树。 __FILE____LINE__由预处理器处理。他们不应该被定义。您没有向我们展示生成这些错误的实际代码,因此我不确定我们如何帮助您。

答案 1 :(得分:0)

编码器应始终定义符号__FILE____LINE__。如果不是,您必须使用一些特殊选项来禁止它们。

另一方面,您发布的代码不能与标准库一起使用,因此应该避免使用。 是查找内存泄漏的好方法。

编辑:重新阅读你的帖子:你似乎指望调试器向你展示定义;它不能,因为它们是由编译器自动生成的,在编译期间会发生变化。另一方面,您看到的错误与宏重新定义关键字的事实非常兼容,这种方式会破坏标准库代码。