我一直想知道重新定义new
的目的是什么。我的意思是开发人员使用:
#pragma push(macro,new)
#undef new
这有什么用途?我认为新的运算符是所有编译器的标准配置? 重新定义new是否为开发人员提供了一种方法来改变new为对象分配空间的方式?
答案 0 :(得分:4)
您可能会认为它记录了C ++程序中发生的任何分配。因此,您需要定义自己的新操作,以记录此分配。您还需要重新定义删除以记录在C ++中进行的所有取消分配。
有些工具重新定义它并为内存块的开始和结束分配更多内存,并在头部和尾部分出一些签名,以找出代码中运行问题的任何缓冲区。您可以检查MS Application Verifier,这样做。