我最近了解到空类的大小为1而不是零,为什么它没有字节对齐?
在32位环境中,它的大小应为4?下一个对象的地址是什么?
最佳答案
因为C++根本不保证变量的4字节对齐或字对齐。如果这对您很重要,则可以使用 alignas
指定对齐要求:
struct alignas(4) my_empty_struct {};
现在,
my_empty_struct
变量的地址将是4-和so will its size, apparently的倍数。另外,您可以自己用一个虚拟字段填充结构以进行对齐。
alignas
有点像填充字段不可访问。
关于c++ - 为什么C++空类没有字节对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61854244/