我之前遇到了一个bug,现在已经修复了,但我需要在报告中解释一下。
我正在开发一个运行FreeRTOS的嵌入式设备,它有自己的堆内存管理。FreeRTOS有自己的malloc()版本pvPortMalloc(),我之前不知道,使用它可以解决我遇到的内存问题。
我的问题与由malloc()引起的内存溢出的大小有关,数据大小仅为8字节,但溢出的大小相当大,可能是几千字节甚至更大。我的猜测是,在此应用程序中第一次也是唯一一次使用malloc时,它建立了一个至少几kb大小的与FreeRTOS堆竞争的第二个堆。
是否有人能够确认这一点或提供更好的解释?非常感谢提供更多信息或参考资料。
pvPortMalloc()
之前使用的是哪个版本的malloc()
?此外,当应用程序使用malloc()
(无论是哪个版本)时,它遇到了什么问题并不清楚。 - Michael Burr