Tag: 结构打包

C结构中的内存alignment

我在32位机器上工作,所以我想内存alignment应该是4个字节。 说我有结构: typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; } myStruct; 真正的大小是6个字节,我想alignment的大小应该是8,但sizeof(myStruct)返回给我6。 但是,如果我写: typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; int i; } myStruct; 实际大小是10个字节,alignment是12,这次sizeof(myStruct) == 12 。 有人可以解释有什么区别?