问个Struct的对齐问题?

来源:4-1 Linux C公用体

帅踢锅

2015-08-01 09:21

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

//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在对齐方面有所区别,请问又是怎么回事呢?

写回答 关注

2回答

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

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

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

    帅踢锅

    非常感谢!

    2015-08-30 14:26:35

    共 1 条回复 >

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

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

    慕工程200...

    我知道我问题出在哪了,double所占字节是8

    2017-07-02 00:07:56

    共 1 条回复 >

Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118294 学习 · 162 问题

查看课程

相似问题