码迷,mamicode.com
首页 > 编程语言 > 详细

c/c++中的字节对齐

时间:2015-04-06 19:03:15      阅读:202      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!