我正在尝试识别我的 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/