为了账号安全,请及时绑定邮箱和手机立即绑定

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

正在回答

4 回答

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

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

0 回复 有任何疑惑可以回复我~
#1

帅踢锅 提问者

非常感谢!
2015-08-30 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕工程2008534

我知道我问题出在哪了,double所占字节是8
2017-07-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

问个Struct的对齐问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信