遇到有关共用体字节数的题目,于是我用写了一小段代码输出共用体的字节数,但发现了一点问题:
#include
#include
#include
int main(){
union aa{
int x,y;
char c[6];
}a;
printf("%d", sizeof(a));
return 0;
}
问题来了:
当两者都有时,按照理论,共用体字节数应该为6,但运行结果是8
这是为什么呢?
内存对齐的原因。
参考:http://m.jb51.net/article/45406.htm
32位机,分配以4的倍数为基数。