我试图了解C++ 中的放置新表达式。
这个堆栈溢出答案状态T* p = new T(arg);
相当于
void* place = operator new(sizeof(T)); // storage allocation
T* p = new(place) T(arg); // object construction
这delete p;
相当于
p->~T(); // object destruction
operator delete(p); // storage deallocation
为什么我们需要在T* p = new(place) T(arg);
对象构造中放置新表达式,以下不是等价的吗?
T* p = (T*) place;
*p = T(arg);