我们使用 Micrium 的 μC/OS-III RTOS 和 Renesas 的 RX62N。
我们建立了一个系统,我们必须动态分配和释放数据。我们发现函数malloc()和free()不适用于 RTOS。然而,RTOS 对此有一个自定义功能;Mem_HeapAlloc ()函数。这个函数分配了一些 RTOS 的内存'heap'。问题是它没有自由功能,可能是因为一切都进入了堆池。
在 RTOS 中,也可以创建一个池。这个池的问题是所有包含的块都需要相同的大小。由于我们分配和释放不同的大小,这对我们来说不是一个好的解决方案。
我们在这里找到了描述内存 RTOS 功能的文档, 第 4 章描述了这些功能。
有人知道我们如何解决这个问题吗?
我们已经拥有的一些解决方案
- 使所有块大小与最大分配相同。 我们有很多开销,因为最小和最大的分配差别很大。
- 不要做免费的。 这是没有办法的,会出现内存泄漏。
希望有人可以帮助我们。如果有不清楚的地方,请问我
提前致谢