void * mempool_alloc(mempool_t *pool) { void *d; if(pool->free_list == NULL) mempool_alloc_chunk(pool); d = pool->free_list; pool->free_list = pool->free_list->next; return d; }
void* mempool_alloc(MEMPOOL* pool) { MEMPOOL_FREE_BLOCK* block; ++pool->alloc_count; if (!pool->free_list) { /* with an empty free list, we need more memory */ pool->free_list = mempool_alloc_chunk(pool); } /* pull off the head of the free list */ block = pool->free_list; pool->free_list = pool->free_list->next; return block; }