struct结构体的大小计算:
struct A int a; 0-3 4-7 要填充(padding)以保证内存对齐的原则 首先给a分配内存,因为int占四个字节<pack大小(8个字节),所以按照4个字节对齐,起始位值为0,0%4=0,a最后占的内存为0-3; 接着给b分配内存,double占8个字节,所以按照8个字节对齐,起始位为8(8%8=0),b为8-15; 最后char占一个字节,所以c为16-24; 因此结构体A的大小为8+8+9 = 25;有因为25不是结构体中最大占用内存类型double类型大小(8)的整数倍,所以A最后的大小是32;
struct B {
|