kernel 版本:5.0.0
chip:STM32F407VGxx
RAM 配置大小:128K
使用LWIP + SFUD + FAL + (package:rs485 + cjson + net_server + crclib) 的情况下,还有2个堆栈空间2048的应用线程,使用rt_malloc申请内存空间失败,显示没有内存。经测试,只能申请1200bytes 以下的内存。
啥原因?

测试的代码:
void mem_test(int argc, char **argv)
{
char *buf = RT_NULL;
if (argc == 2)
{
int mem_size = atoi(argv[1]);
LOG_D("mem_size = %d", mem_size);
buf = rt_malloc(mem_size);
if (RT_NULL == buf)
{
LOG_D("No memory");
}
else {
rt_free(buf);
}
}
}
MSH_CMD_EXPORT(mem_test, memory test);
使用memheaptrace,最后一个线程创建后,整个内存堆在这个线程开始运行后就异常了。排查后发现是线程内一个数组访问越界引起的。
感谢!