【问题标题】:Size of memory aligned struct内存对齐结构的大小
【发布时间】:2012-09-19 10:56:18
【问题描述】:
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 的倍数)

【问题讨论】:

    标签: gcc struct memory-alignment


    【解决方案1】:

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

    【讨论】:

    • 不是只有起始地址需要内存对齐吗?
    • 不——结构的每个实例都需要具有相同的对齐方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2012-06-23
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多