#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
是什么意思,有什么用处?
这几行代码重新定义默认的 new 操作符为DEBUG_NEW(MFC自己写的一个宏),使得任何通过new新建出来的对象或者内存块都会被记录下来,如果你的程序此后没有释放它们的话,在你退出调试状态时,VC会在输出窗口里面显示出来这些没有被释放的对象或者内存块的信息(这就是所谓的“内存泄露”)。此外,因为使用了“#if _DEBUG”,所以这个内存释放监测的机制仅在编译运行DEBUG版本时有效,在RELEASE版本中没有,所以不会影响其运行效率。