(Win32平台下在GNU GCC编译器中)
给定结构struct A
{
char t:4;
char k:4;
unsigned short i:8;//short大小为2字节,与之前的8位总共3个字节,补1个字节形成4字节对齐,到此为4字节
unsigned long m;//long大小为4字节
};问sizeof(A) = ?
【标准答案】8
注意:字节对齐还与编译器有关!!!
编译器自身的默认对齐大小。
gcc默认是按4字节对齐的,VC 6.0默认是按8字节对齐。但我们可以在程序中加入预编译指令改变默认对齐大小。
详细原理可参照:
C语言 结构体的内存对齐问题与位域 byxing_hao
编译器与字节对齐byzhangyang0402