首页 > 解决方案 > 关于打包结构的大小

问题描述

typedef struct abc
{
    double a;
    int b;
    char c;
    int d;


}__attribute__((__packed__))abc_t;

int main()
{
    //To do place code
    abc_t tmp;
    printf("The size is %d\n",sizeof(tmp));
    return 0;
}

由于此结构的填充被禁用,我假设结构的大小将是结构变量大小的总和,即 8(d 的大小) + 4(b 的大小) + 1(c 的大小) + 4(d 的大小)等于 17,但是当我运行这个程序时,我得到的结果是 20。有人可以解释一下吗?

标签: cstruct

解决方案


推荐阅读