Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169542
  • 博文数量: 69
  • 博客积分: 2627
  • 博客等级: 少校
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 22:37
文章分类

全部博文(69)

文章存档

2017年(3)

2014年(1)

2013年(4)

2012年(6)

2011年(21)

2010年(15)

2009年(19)

我的朋友

分类:

2009-06-11 15:56:32

*****************************************************************************
**  所谓对齐,就是起始地址是对齐字节的倍数
**  如: #pragma pack(2)      起始地址就是 0x...0,2,4,6,8
**       #pragma pack(4)                   0x...0,4,8,c,10...
**       #pragma pack()       取消对齐
*****************************************************************************

对于char型数据,其自身对齐值为1
对于short型为2,
对于int,float,double类型,其自身对齐值为4,单位字节。

这里面有四个概念值:
1)数据类型自身的对齐值          :就是上面交代的基本数据类型的自身对齐值。
2)指定对齐值                   :#pragma pack (value)时的指定对齐值value。
3)结构体或者类的自身对齐值       :其成员中自身对齐值最大的那个值。
4)数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中较小的那个值。(以此为准)

struct ds{
  char b;   /* 0xbfffded0 */
  short c;  /* 0xbfffded2 */
  int a;    /* 0xbfffded4 */
};



阅读(439) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~