DEBUG_NEW

在生成的代码里经常看到如下代码:

#ifdef _DEBUG

#undef THIS_FILE  //取消定义

static char THIS_FILE[]=__FILE__; //将文件名放到THIS_FILE中

#define new DEBUG_NEW  //定义调试宏,将new重定义为DEBUG_NEW

#endif

大体意思就是注释里的了,DEBUG_NEW是个调试宏,用于在调试的时候为寻找内存泄漏提供方便,看下源代码就清楚了:

调试版本的new操作函数:void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);

宏替换:#define DEBUG_NEW new(THIS_FILE, __LINE__) //文件名、行号被传入,供调试输出。

THIS_FILE就是上面定义的了,__LINE__就是行号了

这样在DEBUG模式下,当试图用new分配内存时,就用DEBUG_NEW代替new,而DEBUG_NEW不仅需要要分配内存块的大小,还需要文件名,行号,这样当在调试模式下当发

生内存泄漏时,可以很容易的定位到发生问题的代码处


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值