DSP开发中malloc函数应用问题

来源:互联网 发布:淘宝购物信用怎么提高 编辑:程序博客网 时间:2024/06/06 03:29

最近在撺掇一个完全基于TMS320C6748的还原魔方机器人,图像获取和颜色识别的问题解决的差不多了以后,就开始把解魔方的算法从VC移植到DSP上。(注:解魔方算法为kociemba算法)

不出意外,的确遇到了问题——在PC机上跑算法结果都是秒出,但是DSP跑出正确结果需要将近20分钟,而且有时候会卡住。

迷惑的我在算法的几个关键循环处添加了几个printf语句,在CCS5中进行Debug观察结果,并且和VC结果做对比——是这样:

额。。。的确跑飞了。。。

最后终于找到了这个问题的解决方案。

char* tb = tables[j] = (char*)malloc(sizeof(char)*tl)

问题出在malloc函数上面:算法中为提供足够大的搜寻空间,利用malloc函数分配了比较大的char型数组,在DSP中,动态内存分配的内存空间是在heap里,如果heap分配的空间太小,分配过程中会产生溢出,最后使算法跑飞。

如果将CCS工程中的_DSP.cmd文件中的-heap容量设置大一点,就可以完美运行。

最终结果:

原创粉丝点击