我正在使用Code :: Blocks IDE和GNU GCC编译器。
struct test
{
char a;
char e;
char f;
char b;
char d;
};
sizeof(test)
返回5
。
我读到了这个答案: Why isn't sizeof for a struct equal to the sum of sizeof of each member?
为什么在char
之后没有填充,以便sizeof(test)
返回6
或8
?一旦我添加short
和int
等,我可以提出更多问题。但我认为这个问题现在很好。填充不会使处理器更容易使用结构吗?
答案 0 :(得分:10)
char
的对齐方式只有1,因此不需要填充结构以满足更大的对齐要求。
答案 1 :(得分:1)
由于您大多数时候都在使用一个成员,或者传递结构的地址,因此编译器并不关心整个结构的对齐而不是其成员所需的对齐。这意味着如果您分配此结构(或将其传递给函数),处理器将必须逐个成员读取它。 (而且会慢一点。)