通过查看VS中的内存泄漏检测机制,我想到了这个问题。需要以下样板代码:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
但是将此代码替换为DETECT_MLEAKS
:
#define DETECT_MLEAKS\
#define _CRTDBG_MAP_ALLOC\
#include <stdlib.h>\
#include <crtdbg.h>\
无法完成。
是否有任何变通办法 - 建议?
答案 0 :(得分:6)
//#define DETECT_MLEAKS //Uncomment to detect mem-leaks
#ifdef DETECT_MLEAKS
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#endif
我通常是这样做的。
答案 1 :(得分:4)
在标准C语言中,宏不能生成预处理指令。例如,在ISO 9899:1999标准中:
6.10.3.4重新扫描和进一步更换
[...]
不处理由此产生的完全宏替换的预处理标记序列 作为预处理指令,即使它类似于一个,[...]
(这个&#34;即使它类似于一个&#34;评论是完全多余的,因为当然,如果不类似于一个语法,那么语法不会被视为预处理指令! ,这些词语多年来一直存在于你的脑海中。我只是通过在文档中搜索字符串来找到引用的部分&#34;类似于一个&#34 ;.)