|
|
我很多次遇到过这种情况:
假设有一个结构体
struct STRUCT
{
BYTE a;
DWORD b;
WORD c;
BYTE d;
} obj;
然后
obj.a = 10;
obj.b = 10234;
obj.c = 234;
obj.d = 128;
再用CFile类对象保存到硬盘上的一个文件中
pf.Write( &obj, sizeof(STRUCT) );
查看文件的内容,结果是这个样子的:
0A CD CD CD FA 27 00 00 EA 00 80 CD
将a改成WORD,结果入下:
0A 00 CD CD FA 27 00 00 EA 00 80 CD
都不是预期的结果
0A FA 27 00 00 EA 00 80 和 0A 00 FA 27 00 00 EA 00 80
同样的,如果文件中保存了如下内容
0A FA 27 00 00 EA 00 80
用pf.Read( &obj, sizeof(STRUCT) );来读取同样得不到正确的结果。
难道strcut在内存中不管第一个成员是什么类型的,都是以4位对齐来存储的?
|
|