Luk*_*kas 3 c++ sizeof structure-packing
为什么sizeof();这个结构有16个字节?我正在用g ++编译.
struct bitmapfileheader {
unsigned short bfType;
unsigned int bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned int bfOffBits;
};
Run Code Online (Sandbox Code Playgroud)
对准. 可能在你的平台上整数必须是4字节对齐,短裤是2字节对齐.
+0 -1 : bfType
+2 -3 : <padding>
+4 -7: bfSize
+8 -9: bfReserve1
+10 -11: bfReserve2
+12 -15: bfOffBits
-------------
16 bytes
Run Code Online (Sandbox Code Playgroud)
对齐是好的,因为未对齐的结构需要许多架构的额外工作.
结构中的各个字段需要适当对齐.编译器将填充结构中的额外空间以满足对齐要求.
如果您不想这样,可以使用UNALIGNED宏.