正确使用 DEBUG_NEW
Using DEBUG_NEW correctly
有人可以说明我是否必须将这段代码添加到我所有的 CPP 文件的顶部,或者如果只有一个 CPP 文件定义它就足够了吗?
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
您需要将此宏放在您希望 track memory allocations 的每个翻译单元 1 的顶部。宏从定义它们的位置到当前编译的翻译单元的末尾有效(除非它们在末尾之前未定义)。
另请注意,其中涉及一个 __FILE__
宏,这已经强烈暗示 new
的 (non-compliant) 替换为 per-file.
1 Translation units 是生成目标代码的编译器的输入。你可以粗略地将一个翻译单元想象成一个经过预处理的源文件(通常文件扩展名为.cpp、.cc或.cxx)。
有人可以说明我是否必须将这段代码添加到我所有的 CPP 文件的顶部,或者如果只有一个 CPP 文件定义它就足够了吗?
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
您需要将此宏放在您希望 track memory allocations 的每个翻译单元 1 的顶部。宏从定义它们的位置到当前编译的翻译单元的末尾有效(除非它们在末尾之前未定义)。
另请注意,其中涉及一个 __FILE__
宏,这已经强烈暗示 new
的 (non-compliant) 替换为 per-file.
1 Translation units 是生成目标代码的编译器的输入。你可以粗略地将一个翻译单元想象成一个经过预处理的源文件(通常文件扩展名为.cpp、.cc或.cxx)。