#define new DEBUG_NEW
2015-06-15 11:37
225 查看
有时候在代码中会看到入下代码
#ifdef _DEBUG
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
#define DEBUG_NEW new(THIS_FILE, __LINE__)
#else
#define DEBUG_NEW new
#endif
这样就很清楚了,当在debug模式下时,我们分配内存时的new被替换成DEBUG_NEW,而这个DEBUG_NEW不仅要传入内存块的大小,还要传入源文件名和行号,这就有个好处,即当发生内存泄漏时,我们可以在调试模式下定位到该问题代码处。若删掉该句,就不能进行定位了。而在release版本下的new就是简单的new,并不会传入文件名和行号。
在开发阶段,这样的宏定义建议保留
#include “graphics.h” // 引用头文件 … #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // 类成员函数的实现体 CXX::CXX() { … }简单对这段代码进行说明:
#ifdef _DEBUG
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
#define DEBUG_NEW new(THIS_FILE, __LINE__)
#else
#define DEBUG_NEW new
#endif
这样就很清楚了,当在debug模式下时,我们分配内存时的new被替换成DEBUG_NEW,而这个DEBUG_NEW不仅要传入内存块的大小,还要传入源文件名和行号,这就有个好处,即当发生内存泄漏时,我们可以在调试模式下定位到该问题代码处。若删掉该句,就不能进行定位了。而在release版本下的new就是简单的new,并不会传入文件名和行号。
在开发阶段,这样的宏定义建议保留
相关文章推荐
- 【分布式版本控制Git】(二)Github的使用
- iOS——隐藏各种bar
- 汇编语言基本语句
- JavaScript中用于四舍五入的Math.round()方法讲解
- win10电脑用IE11浏览器看视频容易出现绿屏故障怎么办?附解决方法
- CloseHandle以及内核对象的释放
- Fragment中监听返回键
- MIUI显示悬浮窗
- jqueyr proxy()
- String和StringBuffer的学习
- Python 的 urllib
- 第一章:MongoDB for windows下载安装
- 希尔伯特空间科普,从冯纽曼说起
- 一致性DMA与流式DMA
- 汇编语言学习笔记(6)——包含多个段的程序
- PHP header 你所不知道的强大所在:交互HTT状态码 SEO优化 在线登录验证 大文件下载
- 2014 年华为校园招聘机试题
- 企业应用通用架构图
- 响应式和自适应的区别
- DuiLib : 修改内嵌网页的安全选项