我想使用 _CRTDBG_MAP_ALLOC 获取内存泄漏信息,尤其是文件和行号,但最后我没有得到它们。我只得到这样的东西:
{130} 0x00695128 处的普通块,16 字节长。数据:<\E Pi > 5C A5 45 01 02 00 00 00 01 00 00 00 E8 50 69 00
我已经看到这应该在所有包括之前:
#define _CRTDBG_MAP_ALLOC
#include <cstdlib>
#include <crtdbg.h>
有些人建议在所有源文件中包含所有内容后添加此内容:
#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
但是,在 main.cpp 中,如果我显式添加内存泄漏,它会在我的输出中与行号一起出现!所以它有效,但并非适用于所有...
当我使用 Boost 库时,我怀疑内存泄漏都发生在这些......(shared_ptr?)的某个地方。但是如何知道这些内存泄漏是从哪里来的呢?