我最近了解到空类的大小是 1 而不是零。为什么它没有字节对齐,在 32 位环境中它的大小应该是 4?下一个对象的地址是什么?
问问题
111 次
1 回答
3
因为 C++ 根本不保证变量的 4 字节对齐或字对齐。如果这对您很重要,您可以使用以下命令指定对齐要求alignas
:
struct alignas(4) my_empty_struct {};
现在,my_empty_struct
变量的地址将是 4 的倍数——它的大小显然也是如此。
或者,您可以自己使用虚拟字段填充您的结构以进行对齐。这alignas
有点像用不可访问的字段填充。
于 2020-05-17T15:39:17.660 回答