为什么c++ empty class没有字节对齐?

Why c++ empty class have no byte alignment?

我最近了解到空 class 的大小为 1 而不是 zero.Why 它没有字节对齐,其中 它的大小在 32 位环境中应该是 4?下一个对象的地址是什么?

因为 C++ 根本不保证变量的 4 字节对齐或字对齐。如果这对您很重要,您可以使用 alignas:

指定对齐要求
struct alignas(4) my_empty_struct {};

现在,my_empty_struct 变量的地址将是 4 和 .

的倍数

或者,您可以自己用虚拟字段填充结构以进行对齐。 alignas 有点像用不可访问的字段填充。