Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101044
  • 博文数量: 16
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-15 18:51
个人简介

Software

文章分类

全部博文(16)

文章存档

2012年(1)

2011年(1)

2010年(2)

2009年(1)

2008年(6)

2007年(5)

我的朋友

分类: C/C++

2007-06-25 01:57:23

还有一个在某处学来的技巧。
就是利用Macro(宏指令)来简化去除Debug模式的测试。
这个代码是适合在Visual C++ 6.0的。
例如:
#include
#ifdef _DEBUG
    #define DEBUG
#else
    #define DEBUG COMMENT
#endif
#ifdef _DEBUG
    #define _dbgf _CrtDbgReport
    #define _memptr(ptr) _dbgf(DBG,"addr=0x%08X, size=%d\n",ptr,_msize(ptr))
    #define _Traceptr(ptr) _memptr(ptr)
#else
    #define _dbgf COMMENT
    #define _memptr(ptr)
    #define _Traceptr(ptr)
#endif

#define SLASH(s) /##s
#define COMMENT SLASH(/)

用法:
int *pInt=new int(100);
_Traceptr(pInt);
DEBUG AfxMessageBox("Debugging");

这个的用法是在使用new或malloc时要确定系统给于我们的记忆量与它的地址。
用途是在Debug模式测试软件时,如果有leakage Memory,在中止软件时,
Visual C++ IDE会显示出它没有释放记忆的地址。
由此去我们就可以知道在那里调用new或malloc时出现问题。
一旦测试完毕,只要将它设定为Release模式,在编译时,这些测试的代码将会自动的略过。

(当然在不同的IDE与编译器可以做相应的调整。)

阅读(1718) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~