(1)
typedef struct{
double x;
double y;
}ShpPoint;
结果sizeof(ShpPoint)=0x10;(2)
typedef struct{
int x;
double y;
}ShpPoint;
结果sizeof(ShpPoint)=0x10;(3)
typedef struct{
int x;
int y;
}ShpPoint;
结果sizeof(ShpPoint)=0x08;
为什么第一种情况和第二种情况相同的阿??不知道而且如果改为
(4)
typedef struct{
int x;
int y;
         double      z;
}ShpPoint;
结果sizeof(ShpPoint)=0x10;

解决方案 »

  1.   

    double 类型的不是 sizeof() = 16 的嘛!
      

  2.   

    这是没有选择单字节对齐。
    在project中选择setting,打开设置对话框,选择C/C++,在Category中选择
    Code Generation,可以看到Struct member Alignment中的值为8Bytes,即
    结构成员对齐是按8字节对齐的。选择为1Bytes,重新编译就行了。
      

  3.   

    试试前面加个#pragrma pack(1)?再试试是不是和你想的一样???
    vc是按长字节对齐的。
      

  4.   

    这不是BUG,是编译器把他自动扩充了
      

  5.   

    VC缺省是内存4字节对齐,这样速度快
    可用#pragrma pack()切换