我最近了解到空类的大小为1而不是零。为什么它没有字节对齐,其中在32位环境中,它的大小应为4?下一个对象的地址是什么?
因为C ++根本不保证变量的4字节对齐或字对齐。如果这对您很重要,则可以使用alignas
:
alignas
现在,struct alignas(4) my_empty_struct {};
变量的地址应为4的倍数-和my_empty_struct
。
或者,您可以自己用一个虚拟字段填充结构以进行对齐。 so will its size, apparently有点像填充字段不可访问。