1

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

4

1 回答 1

3

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

struct alignas(4) my_empty_struct {};

现在,my_empty_struct变量的地址将是 4 的倍数——它的大小显然也是如此

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

于 2020-05-17T15:39:17.660 回答