Manco's Blog

My little world!~

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

上午:把文件系统测试程序写完了。用到了军哥的参数配置库, 还挺好用的, 军哥果然不愧为我偶像。对事情的要求很认真, 给我的工具又好用。
下午:收到紧急任务, 协助成都办事处, 将一个程序找出问题所在。具体表现为:在虚拟机上运行的结果和850不一致。到底是为什么嗫?待他们的程序发来我一看, 那个叫长哇。 往下一拉都快够到我脚面了, 一看属性, 乖乖, 足足16K。慢慢找吧, 看了好久, 那个流程哇,真是受不了。数据封装成了结构体, 放了群指针飞来飞去的。看得我那个难受哇。正好公司下午网络出现了问题, 上不了网,与成都办的技术员淑君联系不上。白看了一个半小时,进展缓慢。 后来能上网了, 淑君拿来了简装版的程序, 只剩6K了, 流程简便了好多。我FT。。。再后来静下心, 从现象上找原因, 两者不一致主要体现在数据对位上,850端, 数据长度对不准, 歪了。 再从文件读取语句下手, 发现他是一次性将文件内容读入结构体数组中去的。觉得有些不对, 询问过军哥后, 大体心里有了数了。
在PC中, 结构体数组是顺序存放的, 分配的是成块, 连续的内存空间。 因此, 可以直接给定结构体数组的首地址, 然后, 顺序放入每一条记录。每个结构体一条记录。
可是在我们850的ARM系统中, 也许就不一样了, 在结构体数组中, 或许两两之间会有间隙存在。因为每个结构体所分配的内存空间有可能是4的倍数(军哥语录)。所以,无法直接计算出你所需要的记录所在内存中的位置。会有偏差。 恰恰这个问题在PC上, 是不会出现的。
让成都办的吴淑君修改程序, 改为分字段, 分记录地提取文件内容,问题解决。

结论:ARM和PC对于结构体数据类型的存放方式存在差异。

后记:事后, 吴淑君打了两个电话询问我这么做的意思是什么。问完了一次, 想想, 又问了一次, 他可真够执着的。

posted on 2006-02-27 23:24  Manco  阅读(219)  评论(0)    收藏  举报