首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

wince 本机错误异常,已解决,求解释…

2012-05-04 
wince 本机异常错误,已解决,求解释……最近做一个wince的程序,用C#编写,.net 2.0因为要处理网络包,里面有一

wince 本机异常错误,已解决,求解释……
最近做一个wince的程序,用C#编写,.net 2.0

因为要处理网络包,里面有一些变量往数组里面填值,或者从收到的网络包里取值到变量里。

其中有一句是这样的:

*(int *)(Packet + NowOffset) = htonl(BindSetInfo.ItemInfo[i].ItemCount);

即把ItemCount的值转成网络字节序后,放入Packet + NowOffset的位置。因为Packet是byte类型指针,ItemCount是int型,所以我把它转成了int型指针后再赋值。

但就是这一句出现了本机异常0x80000002

---------------------------------------

最后我用这种方法暂时解决了:
int IntData = htonl(BindSetInfo.ItemInfo[i].ItemCount);

memcpy(Packet + NowOffset, &(IntData), sizeof(int));

中间用了个Int型变量做中转,然后memcpy进去……

可是为什么不能:

*(int *)(Packet + NowOffset) = htonl(BindSetInfo.ItemInfo[i].ItemCount);

求大神解释……

这段代码在PC上编译的时候,工作是正常的,是wince的限制么?

谢过~


[解决办法]
嗯,体系结构的问题吧
你看下Packet + NowOffset的值是多少
也许你的CPU不支持非对齐访问
[解决办法]
byte是两个字节,int是4个字节,数据可能溢出,你单步调试看下代码
[解决办法]
没办法。只能尽量避免。
如果无法避免,小数据量可以自己做个函数按byte复制。
大数据量就用memcpy。

热点排行