内存对齐规则是指变量的偏移量要是他自身类型长度的整数倍。并且结构体的总长度要是其中最长变量类型的整数倍。
sizeof(s)的大小并不是6(1+1+4) ,而应该是8.struct s{ char a; char b; int c; }
这是由于结构体的对齐规则,在b之后,系统会补充2个字节的填充字节。以确保c的偏移地址是4的整数倍。sizeof(s2)的大小为12。由于b的偏移要是4的整数倍,所以在a之后要添加3个填充字节。由于结构体S2的大小要是其中最长变量类型int的整数倍,所以结构体的大小不是9,而是struct s2{ char a; int b; char c;
}
在c之后添加三个字节的填充字节,故sizeof(s2)==12.
关于结构体的大小(内存对齐)
最新推荐文章于 2023-09-24 16:32:33 发布