typedef struct
{
int No;
D_POINT zb[250];
double apart;
int sLine[4];
int eLine[4];
int level;
}INNER_LINE;
typedef struct
{
double x;
double y;
}D_POINT;console应用程序,sizeof(INNER_LINE)居然是4056,害得我忙乎了半天,我说怎么fread文件就是读错

解决方案 »

  1.   

    这是为了对齐如果你这样定义:
    typedef struct
    {
    D_POINT zb[250];
    double apart;
    int sLine[4];
    int eLine[4];
    int level;
    int No;
    }INNER_LINE;
    typedef struct
    {
    double x;
    double y;
    }D_POINT;就是4048在第一个int后面和最后一个int后面,各自填充了一个int的大小,所以你得到的是4056
    自己到网上找一些结构对齐的资料就知道为什么了
      

  2.   

    呵呵,字节对其问题。google下或者在csdn搜一下“字节对齐”,讨论过很多次了。
      

  3.   

    字节对齐问题。
    search “字节对齐” in google
      

  4.   

    in baidu,please search in baidu ,ok~~
      

  5.   

    #pragma pack(push,1)开始定义#pragma pack(pop)这样就满住你要求了
      

  6.   

    http://www.xfblog.com/user1/7106/archives/2005/37787.html
      

  7.   

    一个好的结构体应该是4字节的倍数,看看<<windows游戏编程大师技巧>>里面就知道了,
    一般的应用程序感到不到差异,但在高性能,高速度执行的情况下,性能和速度差异就很明显了.