当前位置: 代码迷 >> VxWorks >> 为啥类型强转后,结构体内的数据就变了
  详细解决方案

为啥类型强转后,结构体内的数据就变了

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