我从网上下了一个程序,想自己照着做一个。下载的程序中定义了以下结构体:
struct MAIN_RECORD_HEAD
{
int  id;
char version[4];
int  hea_length;
int  data_length;
char save1[16];
char test_name[30];
char record[30];
char save2[6];
char set_file_name[30];
char set_file_create_date[30];
char set_file_edit_date[30];
unsigned short  set_block_number;
int  set_file_length; int  data_number;
char syssave[40];
STEAM_IDENT_ stream_[16];
};
    而结构STEAM_IDENT_的定义如下:
struct STEAM_IDENT_
{
short a;
short b;
char x[1020];
}
    我的程序自己建立工程,然后拷贝了人家的代码。这时问题来了,人家代码中语句:sizeof(MAIN_RECORD_HEAD)的值为16622。而为什么我的代码中语句sizeof(MAIN_RECORD_HEAD)的值为16624?
    我算过,4+4+4+4+16+30+30+6+30+30+30+2+4+4+40+16*1024=16622。我在网上查了一下,sizeof存在内存对齐,但是为什么人家的代码没有对齐呢?结果导致将二进制文件读入结构体时出现错误。
    百思不得其解。请教各位大虾!