结构体对齐

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

实际的计算机系统对基本类型数据在内存中的位置有限制,要求这些数据的起始地址是某个数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

原文地址:https://www.cnblogs.com/buptlyn/p/3662188.html