这个会涉及到结构体字节对齐的问题。
struct aa
{
int a1:4;
int a2:4;
char b1:4;
char b2:4;
int c1:4;
int c2:4;
};
我们来看看这个结构体占用多少个字节。表面上看一共包含3个char,4个字节就够了,但其实不是。
其中a1和a2虽然值占用了8位,一个char类型,但是不会和后面的char b1放在一起,会仍然占用前面的int类型的内存,4个字节。后面b1和b2占用1个字节,然后补齐3个字节。最后的c1和c2占用4个字节。
这里一共占用12个字节。