重新定义“新”运营商的目的是什么?

时间:2012-08-31 01:42:32

标签: c++ macros new-operator

我一直想知道重新定义new的目的是什么。我的意思是开发人员使用:

#pragma push(macro,new)
#undef new

这有什么用途?我认为新的运算符是所有编译器的标准配置? 重新定义new是否为开发人员提供了一种方法来改变new为对象分配空间的方式?

1 个答案:

答案 0 :(得分:4)

您可能会认为它记录了C ++程序中发生的任何分配。因此,您需要定义自己的新操作,以记录此分配。您还需要重新定义删除以记录在C ++中进行的所有取消分配。

有些工具重新定义它并为内存块的开始和结束分配更多内存,并在头部和尾部分出一些签名,以找出代码中运行问题的任何缓冲区。您可以检查MS Application Verifier,这样做。