Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “重新定义”的目的是什么;新";操作人员_C++_Macros_New Operator - Fatal编程技术网

C++ “重新定义”的目的是什么;新";操作人员

C++ “重新定义”的目的是什么;新";操作人员,c++,macros,new-operator,C++,Macros,New Operator,我一直想知道它重新定义新的的目的是什么。我的意思是,当开发人员使用: #pragma push(macro,new) #undef new 这有什么作用?我以为新的操作符是所有编译器的标准? 重新定义new是否给开发者一种改变新的对象空间分配方式的方法? 你可以认为它是用来记录C++程序中发生的任何分配的。因此,您需要定义自己的新操作,该操作将记录此分配。此外,您需要重新定义删除以记录C++中所有的Un分配。 一些工具重新定义它,为内存块的开始和结束分配更多内存,并在头部和尾部找出某些签名,以

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

#pragma push(macro,new)
#undef new
这有什么作用?我以为新的操作符是所有编译器的标准?
重新定义new是否给开发者一种改变新的对象空间分配方式的方法?

你可以认为它是用来记录C++程序中发生的任何分配的。因此,您需要定义自己的新操作,该操作将记录此分配。此外,您需要重新定义删除以记录C++中所有的Un分配。
一些工具重新定义它,为内存块的开始和结束分配更多内存,并在头部和尾部找出某些签名,以找出代码中的缓冲区过度运行问题。您可以检查MS Application Verifier,它可以执行此操作。

我认为可以重新定义new,以便它们可以进行特殊的分配大小,比如在结构上使用“#pragma pack”。我想我错了。谢谢你清理这个。可能是的副本