c++ (X* nptr = new(ptr)X {})是什么意思?[重复]

xfb7svmp  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(164)
    • 此问题在此处已有答案**:

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中运行

lnlaulya

lnlaulya1#

它需要#include <new>才能工作。它是一个重载的new运算符,调用构造函数时不分配新内存。相反,新结构体被构造到ptr所指向的内存中,旧数据因此被覆盖。请参见that以获取参考。

相关问题