内存大小对齐结构

时间:2012-09-19 10:56:19

标签: gcc struct memory-alignment

struct Test
{
    int a;
    char b;
    int c;
} __attribute__((packed, aligned( 128 )))test;

sizeof(test)返回128。

为什么尺寸不是9?

内存是否被舍入到128的倍数?

例如:

struct Test
{
 int b;
 char c;
} test;

sizeof(test)返回8(舍入为8的倍数)

1 个答案:

答案 0 :(得分:3)

如果要创建一个struct Test数组,那么每个元素都需要128字节对齐,因此需要将每个结构实例填充为128字节的倍数来维持这一点。因此sizeof(struct Test) = 128。