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

本文探讨了嵌入式开发中常见的三个问题:内存不足、变量未初始化及内存对齐问题。这些问题在从x86架构移植到ARM架构时尤为突出,文章提供了具体的解决思路和技术建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

3. 内存对齐, 话说这个是交叉编译器的bug, 在某些特定字节顺序下, 若以1对齐, arm端的程序会错, 例子见

http://topic.youkuaiyun.com/u/20120106/12/3a68d384-b3be-4441-87f1-6da82ee87084.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值