我正在使用从这里找到的指南来寻找Win32应用程序中的内存泄漏。如所描述的那样,我放置了。
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
我在一个文件的顶部(包含WINAPI _tWinMain的cpp文件)和winmain的退出点添加了代码行
_CrtDumpMemoryLeaks();
很遗憾,我看不到泄漏的行号/位置(但是我可以得到一个泄漏清单)。
我也尝试着放置
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_DEBUG);
在WinMain的开头 - 不过还是没有运气。
我觉得这很奇怪,因为我通常不会有找到泄漏或自动报告它们的问题。
这是一个我正在为新雇主工作的庞大而古老的遗留应用程序。在过去,我通常使用标准的VS向导进行工作。
有没有建议如何获取导致泄漏的源代码行/方法?(或者至少是“new”调用的行?
编辑:
我也尝试了Visual Leak Detector,但没有成功。
非常奇怪。
编辑
我尝试使用下面列出的new的重新定义,但当编译boost时会出现错误。