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链表,释放内存到内存池用的是头插法。申请和释放都是操作下指针,所以运行速度比动态分配的堆块快,也不会有内存碎片。

 

 
 
 
 
 
 
 
posted @ 2023-06-18 21:00  别别别别闹  阅读(52)  评论(0)    收藏  举报