int 占据4字节的,内存分配从地址为4的倍数开始
short 占据2字节的,内存分配从地址为2的倍数开始
struct student
{
char *name;
char idcard[8];
short age;
}
Sizeof(char*) = 4/ sizeof(idcard)=8*1 / sizeof(short)=2.
sizeof(student)=3*8 = 24 struct变量占据的内存大小按照最大变量 idcard 对齐
如果加上
pragma pack(2)
sizeof(student) = 4+8+2 = 14 struct变量占据的内存大小按照pack(2) 对齐
pragma pack(4)
sizeof(student) = 4+8+4 = 16 struct变量占据的内存大小按照pack(4) 对齐
pragma pack(16)
sizeof(student) = 4+8+4 = 16 struct变量占据的内存大小按照最大变量 idcard 对齐 因为pcck(16)>sizeof(idcard)
struct myclass
{
char *name;
short number;
student lari;
student yuki;
}
结构嵌套后,内存对齐和上面有变化
举例
struct example2
{
char *name;
example1 lari;
short number;
};
sizeof(example2) = 40
但是
struct example2
{
char *name;
short number;
example1 lari;
};
sizeof(example2) = 32
为什么?