strcut分配空间的方法
记住下面2点就OK
1、结构体内每个成员相对结构体首地址的偏移量必须是其大小的倍数。
2、整个结构体的大小必须是结构体内最大成员大小的倍数。
e.g:
struct s1 { int i: 8; int j: 4; int a: 3; double b; };
占用16个字节 理论上是这样的,首先是i在相对0的位置,占8位一个字节,然后,j就在相对一个字节的位置,由于一个位置的字节数是4位的倍数,因此不用对齐,就放在那里了,然后是a,要在3位的倍数关系的位置上,因此要移一位,在15位的位置上放下,目前总共是18位,折算过来是2字节2位的样子,由于double是8 字节的,因此要在相对0要是8个字节的位置上放下,因此从18位开始到8个字节之间的位置被忽略,直接放在8字节的位置了,因此,总共是16字节。