c++ - 重新定义 "new"运算符的目的是什么?

标签 c++ macros new-operator

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

#pragma push(macro,new)
#undef new

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

最佳答案

您可能认为它可以记录 C++ 程序中发生的任何分配。所以你需要定义你自己的新操作来记录这个分配。您还需要重新定义删除以记录所有在 C++ 中进行的未分配。

一些工具重新定义它并为内存块的开始和结束分配更多内存,并在头部和尾部输出某些签名,以找出代码中的任何缓冲区溢出问题。您可以检查这样做的 MS 应用程序验证程序。

关于c++ - 重新定义 "new"运算符的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207885/

相关文章:

c++ - 与 C++20 协程一起使用时,boost::asio::use_awaitable 和 boost::asio::deferred 之间有什么区别?

build - mongoid 新建与构建

c++ - 这两种新语法有什么区别?

C++ 引用正在构造的对象

c++ - 相当于智能指针

macros - Common Lisp 反引号/反引号 : How to Use?

c - 打印值的宏中的警告

c - 是否可以对嵌入式软件的 C 宏进行单元测试?

javascript - JS new.target 与 instanceof

c++ - pthreads:触发其他线程的线程