c语言编程运行时出问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:25:07
mpeg4的解码程序,在pc上运行时没问题的,可移植到arm上的时候不能正常解码,出现类似如下的抱错开始刷屏“ Alignment trap: self (1163) PC=0x00008b04 Instr=0xe5932000 Address=0x401b5ff2 FSR 0x001
Alignment trap: self (1163) PC=0x00008b04 Instr=0xe5932000 Address=0x401b5ff2 FSR 0x001”
我找到了出现问题的函数,可比较奇怪的是这个问题是在第一次调用这个函数时没有问题,但第二次调用前(我查过,根本就没有运行该函数时)却开始抱错并一直在刷屏,(错误中的地址是会变的)。
有人说是函数调用的变量长度有问题,不知对不对,如何解决?

估计是对齐出了问题。

pc上面你从任意地址开始一个int(或者是别的什么多字节类型)都是可以的, 而在arm上4字节类型地址就必须从4的整数倍开始
所以pc上正常的程序很多都在arm下没法跑。 你可以查一下跟那个函数相关的什么数据类型, 看看有没有没对齐的问题(编译器应该有这个选项,具体不清楚) 。
另外以前做通信方面应用的时候经常遇到的就是字节转数字,比如 byte[4]强制转换成int, 这样的操作在pc上完全没问题, 在arm上如果byte的位置不对就跑不下去

google一下这个 alignment trap可以找到一堆东西,也许有你需要的