【发布时间】:2020-07-03 14:58:43
【问题描述】:
来自here:
标准 C++ 库提供了一种放置形式 operator new 在标准头中声明为:
void *operator new(std::size_t, void *p) throw ();大多数 C++ 实现将其定义为内联函数:
inline void *operator new(std::size_t, void *p) throw () { return p; }它只返回第二个参数的值。它 完全忽略它的第一个参数。异常规范 throw() 表示该函数不允许传播任何 例外。
我知道放置 new 只是对operator new 的重载,而且它在给定的内存地址上调用构造函数。
但是是什么让它调用构造函数呢?它只需要一个指针并再次返回它。取一个指针然后返回它有什么意义?为什么要将值传递给函数以将其取回?
【问题讨论】:
标签: c++ new-operator allocation allocator placement-new