Microchip
直播中

李晓鹏

7年用户 1263经验值
私信 关注
[问答]

不使用旧libc库的情况下调用malloc会导致崩溃吗

我使用MPLABX 3.20与XC16 1.25。我的PIC是PIC24FJ128GA010,我与Explorer 16开发板和MPLLAB REAL ICE仿真器一起使用。如果编译器被配置为不使用遗留libc库,那么当我调用malloc()(或其任何相关函数)时,PIC崩溃并重新启动。如果编译器被配置为使用遗留libc库,那么对malloc()的调用就可以正常工作。程序在开发板上的第一个LED上调谐,然后调用malloc(),然后循环,在短时间延迟后闪烁每个后续LED。当项目被配置为文件& gt;ProjtProjksProtots & Gt;x16全局选项-&使用传统的LIBC时,程序工作。当这个盒子没有选中时,程序就崩溃了(只有第一个LED灯,然后昏暗,因为它一直复位)。我是微芯片的新手——这些都是初期的问题——所以请原谅我的无知。我有一个使用StrudUp()的函数,但没有使用“使用旧LIBC”选项,该函数是不可生存的。我知道它有静态变量,不是线程安全的,但是这里没有任何线程需要担心。那么,我缺少了什么?为什么MalCube()不起作用?我应该使用“传统的LIBC图书馆”来进行新的开发吗?感谢您提供的任何帮助。下面的代码。

回帖(2)

唐红菊

2020-5-11 16:41:29
在链接器选项中设置堆大小吗?
举报

陈霞

2020-5-11 16:48:18
事实上,我没有。默认是没有堆,所以这就是问题所在。我在项目属性的“LD”部分分配了足够的工作来完成任务,这是有效的!谢谢你的信息-它已经找了好几个小时了!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分