//数据包头结构,该结构在win32下为4byte
typedef struct _head
{
char type;                //这里占有一个字节
unsigned short len;       //这里占有两个字节
}hdr,*phdr;上面的结构不是占用了三个字节吗?但是资料上却说是占用三个字节,请指点,多谢。

解决方案 »

  1.   

    存在一个对其方式的问题,楼主可参看内存对齐的相关文章:
    http://dev.csdn.net/article/48/48195.shtm
      

  2.   

    //可以搜下 内存对齐
    typedef struct _head 

    char type;                //这里占有一个字节 
    unsigned short len;      //这里占有两个字节 
    }hdr,*phdr; type占一个字节,放在[0]的位置上,
    然后len为2个字节,[1]所在的位置不能整除2,
    那就从第2个字节开始放len,就是[2, 3]
    最后占用的内存就是[0, 1,2,3]总共4字节...
      

  3.   

    可以使用#pragma pack(n)命令更改对齐单位
      

  4.   

    内存对齐,是四字节。
    如果不想让对齐,用 #pragma pack(1)
      

  5.   

    typedef struct _head 

    char type;                //这里占有一个字节 
    unsigned short len;      //这里占有两个字节 
    }hdr,*phdr; 
    内存对齐了4个字节,补充一下
    #pragma pack(1)不是任何地方都可用的,