【发布时间】:2015-04-25 14:08:57
【问题描述】:
#include<stdio.h>
struct A
{
char c;
double e;
int s;
}A;
int main()
{
printf("%u\n", sizeof(A));
return 0;
}
输出16。如果将结构内部填充和结构填充作为一个整体考虑,不应该是24吗?
我正在使用 GCC 4.8.2 在 Ubuntu 14.04 32 位 上编译代码。
【问题讨论】:
-
为什么应该是24?
-
1+3pad + 8 + 4 --> 164 字节对齐对我来说很好。 -
我认为 OP 期望 double 对齐 8 个字节。
-
@Mat, 1 字节用于 c + 7 字节填充 + 8 字节用于 e + 4 字节用于 s + 4 字节用于结构对齐,如果我们声明结构数组并希望对齐内部成员对齐案也。如果我错了,请纠正我。