结构体按照4字节对齐,不足4字节的字段也占用4个字节。这么做的目的是为了提高性能。
楼上正解,一共12个字节
楼上都说的没毛病,我就不再多说什么了
结构体是有字节对齐的,一般默认对齐的字节数是按照宽度最大的成员来定,也就是说,如果宽度最大的成员是int32,则按照4字节为基准对齐,如果宽度最大的成员是
int16,则按照2字节为基准对齐。当然,也可自定义结构体的字节对齐。那就是使用#pragma pack(n)命令来强制系统使用特定的字节对齐,n为1、2、4、8、16。如#pragma pack(8),就是
自定义字节对齐为8字节,如果设定对齐的字节数大于最宽成员的字节数,则采用最宽成员的字节数作为对齐基准。比如你上面那题:默认大小应该是12,如果设定
pack(1),则大小为8;如果pack(2),大小为10;如果pack(4),大小为12;如果pack(8)或者pack(16),因为设定值比最大的成员宽度还大,所以无效,仍采用默认设置,大小为12