为什么s1和s2的大小是8字节,s3的大小是12字节
按4字节对齐,一个char 一个short 一个char不是刚好4字节吗?为什么又要申请4字节?
对于你这个问题可以参考如下链接:
原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。
原则二:在经过第一原则分析后,检查计算出的存储单元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。
s3的大小是12字节
int i1占第1-4字节
char c2占第5字节
short s1占第7-8字节 (short以2个字节为单位进行存储,由于第5字节已有数据,因此它会存入下一个2字节模块,也就是存入到7~8字节)
char c2占第9字节
最宽的int的长度是4 补齐为4的整倍数就是12字节
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!