c++ - Visual Studio 2008,检测内存泄漏, undefined symbol '__FILE__'

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

我正在尝试识别我的 C++ 程序中的内存泄漏。我使用 Visual Studio 2008。

我找到了一些关于在使用 new 而不是 malloc 进行内存分配时识别 memleaks 的教程,这是我在 main 之上定义的内容:

#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__。当我在 __FILE____LINE__ 上点击“RMB->go to definition”或“RMB->go to declaration”时,我得到:

the symbol '__FILE__' is not defined 

the symbol '__LINE__  ' is not defined 

分别。

我该如何解决?

最佳答案

符号__FILE____LINE__ 应该总是由编译器定义。如果不是,您必须使用一些特殊选项来抑制它们。

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

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

关于c++ - Visual Studio 2008,检测内存泄漏, undefined symbol '__FILE__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137616/

相关文章:

c++ - 在 Visual Studio 2008 上设置预调试事件

c++ - 输出字符串用 C++ 在 Linux 中覆盖终端上的最后一个字符串

c++ - 将 64 位枚举传递给 Printf 时出现 VS2010 错误

c++ - 为什么 QFileDialog 方法目录不显示当前目录?

c - 在 Windows 上学习 IOCP 的资源

visual-studio-2008 - 如果我切换到 ATL,还需要调用 CoInitialize(NULL) 和 CoUninitialize() 吗?

c++ - initializer_list 作为数组引用参数的参数?

c# - 什么可以更改文件的创建/修改日期?

c++ - 运行时错误打印字符串,即使它在函数中工作正常

visual-studio - Visual Studio 2008 - 小 map