结构体对齐
struct
{
char a;
short b;
int c;
}A;
问sizeof(A)等于多少
在32位的系统中char类型占1个字节,short占2个字节,int占4个字节,因为有结构体对齐的概念存在,所以sizeof(A)的值不为7而为8
– 结构体数据成员对齐的意义:
许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。
比如这么一种处理器,它每次读写内存的时候都从某个8倍数的地址开始,一次读出或写入8个字节的数据,假如软件能保证double类型的数据都从8倍数地址开始,那么读或写一个double类型数据就只