对齐

有个结构体是介样的:

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个字节了。

在传输文件的时候,会出现要传的文件大小小于接受到的文件大小,可能就是这个原因。

posted @ 2013-09-28 17:00  亘大  阅读(192)  评论(0编辑  收藏  举报