结构体对齐

一:结构体数据成员对齐的意义:

实际的计算机系统对基本类型数据在内存中的位置有限制,要求这些数据的起始地址是某个数K的整数倍,这就是所谓的内存对齐,这个K称为该数据类型的对齐模数

这种要求可以简化处理器与内存之间传输系统的设计,还可以提升读取的速度

 

二:结构体对齐两方面含义

结构体总长度

结构体内各数据成员的内存对齐

 

三:结构体大小的计算方法过和步骤

1):将结构体内所有数据成员的长度相加

2):各数据成员为了内存对齐而填充的字节数加到总长度中

3):结构体对齐,结构体的总长度也应该是某个模数的整数倍,这个模数是  min(结构体中最长数据的长度,pragma pack)

4):在windows和linux系统中,模数的长度不同

 

例子:

#ragma pack(8)

strucy

{

char a;

long double b;

int c;

}

 

WINDOWS下

1+4+8 = 13

13+7 = 20

20+4 = 24

 

posted @ 2014-04-13 14:04  bupt_lyn  阅读(182)  评论(0编辑  收藏  举报