您的位置:首页 > 其它

本地x86可以, 放到arm上就不行的几种可避免的情况

2012-08-11 11:27 239 查看
1. 内存不够, 本地x86通常的内存远大于嵌入式arm里面的, 这个用top -m命令可以查

2. 变量未初始化, c/c++标准并没有规定变量会自动初始化为0, 而在x86的gcc里, 通常(没遇到过 不通常 )会默认0, 而在arm交叉编译后就没这么幸运了, 虽然99%的情况也是0,

可是仍然有1%的可能不是, 我估计这1%出现的原因也是嵌入式设备中的内存碎片,导致不能分配连续的0造成的. 所以写程序时对关键变量, 如指针, 可能变用作数组下标的变量都要初始化一下

3. 内存对齐, 话说这个是交叉编译器的bug, 在某些特定字节顺序下, 若以1对齐, arm端的程序会错, 例子见
http://topic.csdn.net/u/20120106/12/3a68d384-b3be-4441-87f1-6da82ee87084.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐