简单的mem pool实现

初始化,get,put
void VIDEO_MEMPOOL_InitEmpty(video_mempool_t *mempool)
{
mempool->pool = NULL;
mempool->cnt = 0;
}

添加
void VIDEO_MEMPOOL_Put(video_mempool_t *mempool, void *mem)
{
*(void **)mem = mempool->pool;
mempool->pool = mem;
mempool->cnt++;
}

获取
void *VIDEO_MEMPOOL_Get(video_mempool_t *mempool)
{
void *mem = mempool->pool;
if (NULL != mem)
{
mempool->cnt–;
mempool->pool = *(void **)mem;
}
return mem;
}

typedef struct
{
void volatile pool; /!< Pointer to the pool. /
volatile uint32_t cnt; /
!< Count of memory blocks in the pool. */
} video_mempool_t;

问题 1. 既然是mempool,只有一个void*pool的指针和一个cnt,怎么保存多个内存地址形成mempool。

把下一个块内存地址放到,上一块内存地址的头部。这样搞。put。。
简单的mem pool实现

获取的时候;
简单的mem pool实现