NVWA 的内存泄漏检测仅适用于操作员新函数,不适用于任何 malloc 变体或 acutNew**** 函数。 它还只打印内存地址和分配大小。 在linux和Mac中,它能够通过调用addr2line应用程序(gcc的一部分)来获取符号。
为了将泄漏消息发送到调试控制台,我将此函数添加到debug_new.cpp的顶部,然后在代码中完成fprintf的所有位置,我都添加了对该函数的调用。
- void OutputToDebugConsole(const char * format, ... )
- {
- static char sMsg[256];
- va_list args;
- va_start(args, format);
- vsprintf(sMsg, format, args);
- OutputDebugString(sMsg);
- va_end(args);
- }
如果您要使用 NVWA 内容,请将其添加到 stdafx.h 的底部,以使文件远离 VS 解决方案资源管理器。
- #ifdef _DEBUG
- #include "debug_new.cpp"
- #endif
这将自动包括debug_new.h和任何所需的NVWA支持文件。
|