ARM编程中malloc的疑惑!
在ARM的程序中使用了malloc的函数,在ARM的仿真调试工具下,没有问题。
可是下载到实际的板子上运行时,却通不过。请高人指点!
顺便说一下该程序中没有使用操作系统。
[解决办法]
检查对应的 include 目录中有没有这个 malloc函数 ....
用的另外一种板子,
看了一下, malloc 是可用的。
但是其他很多标准C函数都不可用,
所以建议检查一下 ...
另外,
仿真可以通过,
应该没什么问题。
malloc申请的内存大小会不会超限了?
[解决办法]
malloc 在没有OS情况下需要自己实现
堆栈的控制都由自己来设置
否则会出错的
[解决办法]
使用数组有可能会栈溢出.
malloc是返回失败还是把板子搞死?
我觉得很大的可能性是malloc失败,分配不到你要的内存块.
你在仿真设置的时候有没有设置和实际硬件一样的memory map?
而且即使设置了,也可能由于其他调用,内存碎片增加而分配失败的,所以并不一定能百分百模拟内存情况.
[解决办法]
malloc应该是系统内的调用,板子上连os都没有不能分配空间。
这可能需要自己去配制板子上的flash或者ram的寄存器去实现malloc了。。。