为什么 c++ 空类没有字节对齐?

Why c++ empty class have no byte alignment?

本文关键字:字节 对齐 c++ 为什么      更新时间:2023-10-16

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

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

struct alignas(4) my_empty_struct {};

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

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