对于初学者来说结构体内存分析为一个不易理解的点,对齐原则是较为常用的,我这里给大家分享一个较为简单的方法,"睡床原则",首先结构体中最大元素需要一张最大的床,每一张床需要以他为标准制定,剩下的元素则分别占用这个大床,有几张床则结构体的占有字节数为最大元素字节数乘以床的数量.例如:
struct Person{
char *name;
int age;
double year;
} ;
最大元素占用字节数位 double 64位操作系统下占用8个字节,所以需要造一张8个字节的床,char类型在double上方需要一张床,这一张床还剩7个字节,而int 在64位操作系统中占用4个字节,所以char类型睡的床还能睡下int 类型,故结构体占用 8*2=16个字节.同理:
struct Person1{
char *name;
double year;
int age;
} ;
占用8*3=24 个字节