对齐
有个结构体是介样的:
struct A{ int n; int m; char c; }
int n 和 int m 是四个字节,char c 是一个字节,但sizeof(A)是12个字节。
解释:因为在32位机器中,一个指令周期主线(?)传递32个信号(有32根和cpu相连的线的原因),可以表示4个字节大小的数据,当传递的数据不够4个字节的时候,会补齐,这就是对齐,所以A中的char类型被补到4个字节,3个4字节加起来就有12个字节了。
在传输文件的时候,会出现要传的文件大小小于接受到的文件大小,可能就是这个原因。