定义一个_DEBUG(#ifdef/#ifdef防止重复定义),DEBUG_NEW是new的宏,用来动态分配内存,THIS_FILE[] 是一个绝对路径名的文件,#undef THIS_FILE用来防止以前的THIS_FILE宏。
总的来讲,这个程序就是用来动态分配内存的,相对于new而言,这段程序出错的时候可以通过THIS_FILE[]知道程序分配内存出错的位置。 应该足够明白了,希望楼主能懂!
这个代码明显是用于 内存跟踪的..
你可以找一下 DEBUG_NEW的定义,应该差不多是这样:
#define DEBUG_NEW new(THIS_FILE, __LINE__)
除此之外,还应该有对 new运算符的重载,差不多应该是这样:
void * operator new(size_t size, const char *file, int line) {
void *ptr = ::malloc(size);
MemoryTracker::instance().recordAllocation(ptr, size, file, line);
return ptr;
}
这个是预处理条件编译,以便于程序的移植和调试,你可以再看一下这个文件其他内容,找找这段代码的相关内容在其中的应用就可以更好的理解这段话。
这么偏,估计也只会出现在试题里