假设有一个结构体,其构造函数没有初始化所有成员变量:
struct Foo {
int x;
Foo() {}
}
Run Code Online (Sandbox Code Playgroud)
如果我将某个缓冲区设置为 0,则在该缓冲区上使用放置 new 创建一个 Foo 实例,然后从该实例中读取 x,这是定义的行为吗?
void bar(void* buf) {
memset(buf, 0, sizeof(Foo));
Foo* foo = new(buf) Foo;
std::cout << foo.x; // Is this undefined behavior?
}
Run Code Online (Sandbox Code Playgroud)