用户: 密码: 答案:   我要注册   忘记密码

加入收藏  设为首页

开发文档

CNJM首页

业界新闻

手机软件

终端应用

资源下载

EclipseME

CNJM论坛

                 

频道列表

J2ME开发 176篇
服务器端开发 33篇
JAVA语言 71篇
游戏与图形 101篇
WindowsMobile开发 6篇
Symbian开发 61篇
Brew开发 36篇
其它开发平台 6篇

热点文章

BREW™ SDK入门篇...  8247次
BREW开发相关技术论坛 7329次
BREW究竟是什么-B... 7271次
[原创]BREW高手之...  7213次
BREW & J2ME:在差...  7142次
BREW™ SDK入门篇...  6795次
深入Brew编程之一...  6760次
深入BREW消息处理机制 6312次
深入BREW模块加载机制 6185次
BREW SDK入门 6076次
联通博路的开发商F... 5793次
[原创] brew下的大... 5378次

文章搜索

搜 索
按 照
频 道
  
从奇数地址读short类型引起的错误
编辑:evzhy    审核:rocks    文章来源:CNJM论坛精华
关键词:无    发表日期:2003-09-24 14:34:58    浏览次数:4225次
本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网<www.cnjm.net>
来自:http://www.cnjm.net/tech/article763.html

bug表现:
模拟器上没问题,但是手机上level 5背景凌乱,其他level都是好的,唯有level 5的背景有问题,有的区域是对的,有的就是错的,好像马赛克,仔细观察,是深颜色的宫殿的tile,但是却显示在浅颜色的雪地上,斑驳陆离,好像一个后现代图画。
JAVA手机网[www.cnjm.net]
分析:
JAVA手机网[www.cnjm.net]
因为模拟器上没问题,手机上却有问题,所以要找出两者运行中开始不同的地方。
经过分析跟踪,集中到一段代码,它打开压缩的资源数据文件, 读入内存,跳过一定的字节,这里就是level 5的block的tile索引数据,把这段数据复制到局部内存中.
打印全部解压数据在内存中的字节和,手机上和模拟器上相等,
打印level 5的block的tile索引数据的字节和,手机和模拟器上不相等,
打印level 5的block的tile索引数据的起始地址,手机模拟器相等,
打印level 5的block的tile索引数据的个数,相等,
这说明从压缩文件中解压读入内存的数据是正确的,复制个数是正确的,复制开始的位置也是正确的,那为什么简单的复制之后就是错误的?
打印复制开始的地址,是奇数。
问题就在这里。
修改:
原程序中的函数
unsigned short Reader_readWord(READER *pReader)
JAVA手机网[www.cnjm.net]
{
return *((unsigned short*)pReader->pCur)++;
}
JAVA手机网[www.cnjm.net]
pReader->pCur指向奇数地址,是否会有问题?
加入判断,如果是奇数地址,就分别读2个字节,装配成short。
问题解决。
结论:
从奇数字节开始读short等类型的数据,在手机上可能引起问题。
思考:
为什么从奇数字节读short就可能出错,并且有的数据读出来正确,有的读出来不正确,具体的机制是什么?是否和arm c的编译开关选项有关?还是和手机有关?



来自:http://www.cnjm.net/tech/article763.html

相关文章
   暂无相关文章
最新评论
匿名 在 2006-05-11 16:17:29 发表的评论:
扯淡 
evzhy 在 2003-09-25 12:59:06 发表的评论:
哇赛,你真是个c高手啊,比我写的效率高,拿来主义了,嘻嘻 
luoyizhou 在 2003-09-25 12:17:25 发表的评论:
我也想知道为什么,我记得把奇地址当作int指针进行操作会导致黑屏,同事的经验 :),我们就规定数据输出是加PAD保证整型数据从偶地址开始.
当然函数也可以改成
unsigned short Reader_readWord(READER *pReader)
{
short ret;
char* d = (char*)&ret;
*d++=pReader->pCur++;
*d++=pReader->pCur++;
return ret;
}
不知道效率会不会变低点. 
网站简介  |  关于版权  |  广告服务  |  网站地图  |  联系我们
Copyright © www.CNJM.net, All rights reserved
中国JAVA手机网 版权所有
ICP备案:京ICP备041452