- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 07:46:22
荣誉版主
- 积分
- 2323
|
发表于 2024-7-4 15:31:02
|
显示全部楼层
本帖最后由 tzz1983 于 2024-7-4 15:32 编辑

感谢迟总指导, 话说你是怎么办到这么快就知道作案的呢?
我这边的问题也有些眉目了,
其中一个小问题是内存管理要求传入的首址是对齐 "指针宽度".
我正好关掉了传入参数检查功能, 以前没发现这个问题.
另外用XDATA出现水土不服的情况也有所改善
主要原因还是各种类型指针的转换造成的, C251的指针类型太多了
相互转换的时候偶尔会出错
下面贴一点比较有意思的代码:
看结果:
搞笑吧, 第二次赋值也是加强制转换(u8 xdata*)addr , 但强制转换的作用好像消失了 , 我的1呢, 不见了!
再来看一个:
第一次判断 为两个指针不相等, 这是肯定的, 本来就是两个不相等的地址.
但后面两句表明, 他们都可以和NULL相等, 有没有点自先矛盾的感觉
为了应对这种隐患, 我经常干这个事情:
char xdata bNULL _at_ 0; //把这个地址占掉, 谁也别想用
|
|