首页 > 编程语言 > 详细

c/c++中的字节对齐

时间:2015-04-06 19:01:03      阅读:320      评论:0      收藏:0      [点我收藏+]

    参加了很多面试,遇到字节对齐的问题不是1次2次,但一直没有彻底弄明白是什么意思,清明节刚好闲下来,彻底研究了一下,得到下面的结论,希望对以后的面试和工作有作用:

第一种结论:

  1. 首先提出几个概念

    ①基本类型:像int,char,float,double之类的基本类型

    ②复合类型:结构体,类,联合体之类的类型,由基本类型构成

    ③数据类型的宽度: 用sizeof (type)计算出来的宽度,一般int为4 Bytes,char为1 Byte。。。

    ④有效对齐模数N: 编译器默认对齐模数为M,M可以用#pragma pack(n) 自己指定,数据类型的宽度为W=sizeof(type), 则N=min(M,W)

  2. 数组的有效对齐模数的计算

    找到结构体中最宽类型的有效对齐模数N,则结构体的有效对齐模数为N,结构体的大小为N的整数倍,而且结构体的起始地址是%N=0。

第二种结论:

        ① 首先不计算基本类型的对齐模数,首先找到最宽类型的宽度W;

        ② 结构题的有效对齐模数为 N=min(默认的对齐模数,W)   


c/c++中的字节对齐

原文:http://my.oschina.net/u/1772925/blog/396533

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!