struct
{
short a;
short b;
short c;
short d;
long e;
short f;
}m_struct;
sizeof(m_struct)取结构体的长度为16,为什么,取有的结构体正常,
memcpy(buf,&m_buf,length)拷贝的内容和实际不一直,会在某字节前多出现两个字节的无效值,为什么?

解决方案 »

  1.   

    sizeof的问题,因为VC在编译时默认把struct按8字节对齐,大于8小于16的长度就是16。你可以用#pragma或者在项目设置里更改,可改为按1、2、4、8、16字节对齐。
    第2个问题,应该是LZ看错了,注意&m_buf前面有一个&号。
      

  2.   

    是14
    但是sizeof出来后是16,我想要的结果是14,不知道为什么,有人说需要设置什么宏,我也没有找到,我就想要正确的值
      

  3.   

    这样写
    #pragma pack(push, 1)struct

    short a;
    short b;
    short c;
    short d;
    long e;
    short f;
    } m_struct;#pragma pack(pop)
      

  4.   

    #pragma pack(push, 1)
    ...
    ...
    #pragma pack(pop)
      

  5.   

    #pragma pack(1)
    这样不行??