我了解填充的工作原理。我知道对齐是什么。对我来说奇怪的是,为什么只有 char 字段的结构的大小没有与 4 个字节对齐(最后填充)?我怀疑规范根本无法保证这一点,因此编译器不会这样做。如果是这种情况,我可以获得对此类规则的参考吗?我最感兴趣的是 x86 和 x86-64 架构。
例子:
struct foo {
char field1;
char field2;
char field3;
} foo2;
int main(void)
{
printf("sizeof=%lu\n", sizeof foo2);
}
输出:sizeof=3