【发布时间】:2013-12-12 21:17:43
【问题描述】:
typedef struct structA
{
char C;
double D;
int I;
} structA_t;
这个 structA_t 结构的大小:
sizeof(char) + 7 字节填充 + sizeof(double) + sizeof(int) = 1 + 7 + 8 + 4 = 20 字节
但这是错误的,正确的是
24
。为什么?
【问题讨论】:
-
可以对齐到 8 字节。
-
额外的
4用于在int之后进行填充 -
@RajuKundhe 为什么在 int 之后需要 4?你能详细说明一下吗?
-
请查看Structure Padding 和padding。
-
@gpuguy 字长为 8 字节(取决于处理器)。 int 长度为 4 字节(取决于平台),因此必须额外填充 4 个字节,同样
sizeof(char)=1 Byte必须填充 7 个字节
标签: c