假设有一个结构体,其构造函数没有初始化所有成员变量:
如果我使用memset将某个缓冲区设置为0,并在该缓冲区上使用placement new创建Foo的实例,然后从该实例中读取x,这是定义良好的行为吗?
struct Foo {
int x;
Foo() {}
}
如果我使用memset将某个缓冲区设置为0,并在该缓冲区上使用placement 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?
}