C语言中,struct类型在内存中占有大小根据编译器的不同而不同。
现在测试的是以vc++6.0编译环境的结果。
在vc++6.0下,我们知道各种数据类型的占用大小不一样。
char:1字节
int:4字节
short:2字节
float:4字节
double:8字节
char:4:0.5字节
其 实,这是VC对变量存储的一个特殊处理。为了提高CPU的存储速度,VC对一些变量的起始地址做了”对齐”处理。在默认情况下,VC规定各成员变量存放的 起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。下面列出常用类型的对齐方式(vc6.0,32位系统)。
类型
对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)
Char
偏移量必须为sizeof(char)即1的倍数
int
偏移量必须为sizeof(int)即4的倍数
float
偏移量必须为sizeof(float)即4的倍数
double
偏移量必须为sizeof(double)即8的倍数
Short
偏移量必须为sizeof(short)即2的倍数