rtx5-mempool.c
1.内存池结构
拿os_mpi_thread举例

2.内存池初始化
uint32_t osRtxMemoryPoolInit (os_mp_info_t *mp_info, uint32_t block_count, uint32_t block_size, void *block_mem);
其中的block_base和block_lim管理了内存池的边界,block_free是管理剩余可用的内存块链表。

3.内存申请
void *osRtxMemoryPoolAlloc (os_mp_info_t *mp_info);

4.内存释放
osStatus_t osRtxMemoryPoolFree (os_mp_info_t *mp_info, void *block);

5.总结
从内存池申请和释放内存都是操作了block_free链表,释放内存到内存池用的是头插法。申请和释放都是操作下指针,所以运行速度比动态分配的堆块快,也不会有内存碎片。


浙公网安备 33010602011771号