小编Dan*_*tts的帖子

memset 之后的 C++ 放置新

假设有一个结构体,其构造函数没有初始化所有成员变量:

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)

c++ memset placement-new undefined-behavior

5
推荐指数
2
解决办法
218
查看次数

Java同步方法文档似乎错了

关于Java并发性的Oracle 课程说明:

对同一对象的两个同步方法的调用不可能进行交错.

但是,如果非静态同步方法包含对其的调用,则会wait()释放该对象监视器的线程所有权,从而允许另一个线程进入同步方法.我误解了wait(),还是不考虑交错?

java multithreading

1
推荐指数
1
解决办法
50
查看次数

标准布局结构的成员偏移量的 C++ 标准

C++11 标准是否保证所有编译器将为给定标准布局结构中的所有成员选择相同的内存偏移量,假设所有成员都有保证的大小(例如,int32_t而不是int)?

也就是说,对于标准布局结构中的给定成员,C++11 是否保证offsetof在所有编译器中给出相同的值?

如果是这样,是否有任何关于该值的规范,例如作为结构成员的大小、对齐和顺序的函数?

c++ struct c++11

0
推荐指数
1
解决办法
98
查看次数