为什么类型强转后,结构体内的数据就变了
比如,有个内存地址是0xfefefe。
有数据结构:struct A{
ULONG a;
BYTE b;
BYTE d;
ULONG e;
};
A *a ;
a = (A*)0xfefefe
然后,发现b里面的内容跟内存里的实际内容不符合。已经做过字节取整的处理,字节长度正确。如果不是强转,而是直接从内存地址里取数据,也是正确的。
只有这种指针强转后,会发现数据是错的。
[解决办法]
一般也就下面两种情况:
1. 结构体在内存对齐问题?
2. 注意:大端,小端问题?