Memory management 是否可以在MFC应用程序的调试版本中替换内存分配器?

Memory management 是否可以在MFC应用程序的调试版本中替换内存分配器?,memory-management,mfc,allocator,Memory Management,Mfc,Allocator,我想在MFC应用程序中使用。我想跟踪new/delete,如果我能跟踪malloc/free,那是额外的奖励 遗憾的是,MFC重新定义了新< /COD>和Dele> -但是使用宏(Debug GnEng-)-所以我不能使用标准的C++方法来重新定义它们。(MFC将它们定义为具有不同的签名,并将源文件和行号作为附加参数) 有没有办法强制所有new/deletes通过我的分配器,并阻止MFC尝试获取这些分配器?您可以通过在stdafx.h结尾重新定义DEBUG\u new来停止MFC对new的挂接

我想在MFC应用程序中使用。我想跟踪
new
/
delete
,如果我能跟踪
malloc
/
free
,那是额外的奖励

遗憾的是,MFC重新定义了<代码>新< /COD>和Dele> <代码> -但是使用宏(Debug GnEng-)-所以我不能使用标准的C++方法来重新定义它们。(MFC将它们定义为具有不同的签名,并将源文件和行号作为附加参数)


有没有办法强制所有
new
/
delete
s通过我的分配器,并阻止MFC尝试获取这些分配器?

您可以通过在stdafx.h结尾重新定义DEBUG\u new来停止MFC对new的挂接

#undef DEBUG_NEW
#define DEBUG_NEW new

通过在stdafx.h的末尾重新定义DEBUG_new,可以停止new的MFC挂接

#undef DEBUG_NEW
#define DEBUG_NEW new

为什么你不能定义你自己的DEBUG_新宏并用它来代替MFC?似乎不管我如何努力获取所有的宏,MFC内部仍然有代码试图使用调试分配器。不幸的是,我正在进行的项目大约需要30分钟来编译,因此,对主标题的每一个小调整都浪费了我一天的大部分时间。今晚我将尝试更多的更改,并让它在一夜之间构建。为什么你不能定义自己的DEBUG_新宏并使用它而不是MFC?似乎无论我如何努力获取所有宏,MFC内部仍有代码将尝试使用调试分配器。不幸的是,我正在进行的项目大约需要30分钟来编译,因此,对主标题的每一个小调整都浪费了我一天的大部分时间。今晚我将尝试更多的改变,并在一夜之间离开它。不幸的是,我已经尝试过了——我似乎无法消除所有的改变。它们中的一些似乎是由_AFX_NO_DEBUG_CRT控制的,这是不可能改变的。我发现有些问题似乎总是漏掉。我认为我遇到的问题是针对我们的应用程序的。不幸的是,我尝试过——我似乎无法消除所有问题。它们中的一些似乎是由_AFX_NO_DEBUG_CRT控制的,这是不可能改变的。我发现有些问题似乎总是漏掉了。我认为我遇到的问题是我们的应用程序特有的,所以将答案标记为正确答案。