问答详情
源自:4-1 Linux C公用体

问个Struct的对齐问题?

听了半天结构体的对齐方式,感觉还是没听懂。请问下面的例子是怎么计算出来的呀?

//st1类型占8字节

struct st1{

    int a;

    short b;

    char c;

};


//st2类型的占12字节 调了st1数据成员的次序

struct st2{

    char a;

    int b;

    short c;

};


//st3类型的占16字节 不论如何调序结果都是16字节

struct st3{

    int a;

    char b;

    double c;

};

另外,听说GCC和标准C在对齐方面有所区别,请问又是怎么回事呢?

提问者:帅踢锅 2015-08-01 09:21

个回答

  • onemoo
    2015-08-30 13:35:10
    已采纳

    标准对此没有规定,完全由编译器自己实现。自己写代码时不要依赖这种“未指定”的行为。

    想要知道你使用的编译器是怎样实现的,就用gdb打印出数据结构看一下吧。

  • 慕工程2008534
    2017-07-02 00:01:57

    st3占用的是16?我手动计算是12啊,请指教