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

来源:互联网 发布:万网域名隐藏whois 编辑:程序博客网 时间:2024/05/17 09:00

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

原创粉丝点击