1.项目背景
项目是基于Nxp Mcu+FreeRtos,成品是车机(车载导航系统),在消息通信过程中会进入内存分配失败钩子函数里面
2.问题原因
FreeRtos系统的Heap堆不够用,就是在最开始给FreeRtos分配的Heap
3.如何分析解决
Freertos如何开启内存分配失败钩子函数
首先开启 configUSE_MALLOC_FAILED_HOOK,当有内存分配失败时会进入钩子函数
#define configUSE_MALLOC_FAILED_HOOK 1
也可以在程序内调用(int) xPortGetFreeHeapSize(), (int) xPortGetMinimumEverFreeHeapSize()此两个函数获取当前剩余的heap大小,和最小的时候Heap的大小
所以如果你程序内使用了自动分配内存的函数,就必须要检测是否是成对出现的,会不会造成内存泄露,此时 xPortGetFreeHeapSize()这个函数格外的重要,也是你分析内存是否泄露的利器
希望对你们有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)