- 此问题在此处已有答案**:
What uses are there for "placement new"?(25个答案)
Two different values at the same memory address(7个答案)
4天前关闭。
(ptr)代表什么,为什么它会改变存储在ptr中的数据?
struct X
{
int a;
int const b;
};
X* ptr = new X{ 1, 2 };
X* nptr = new (ptr) X{ 3, 4 };
由于某种原因,它不能在任何godbolt的编译器中运行,但可以在visual studio中运行
1条答案
按热度按时间lnlaulya1#
它需要
#include <new>
才能工作。它是一个重载的new
运算符,调用构造函数时不分配新内存。相反,新结构体被构造到ptr
所指向的内存中,旧数据因此被覆盖。请参见that以获取参考。