MemoryPool* MemoryPoolInit(mem_size_t maxmempoolsize, mem_size_t mempoolsize) {
if (mempoolsize > maxmempoolsize) {
// printf("[MemoryPool_Init] MemPool Init ERROR! Mempoolsize is too big!
// \n");
return NULL;
}
MemoryPool* mp = (MemoryPool*) malloc(sizeof(MemoryPool));
if (!mp) return NULL;
mp->last_id = 0;
if (mempoolsize < maxmempoolsize) mp->auto_extend = 1;
mp->max_mem_pool_size = maxmempoolsize;
mp->total_mem_pool_size = mp->mem_pool_size = mempoolsize;
#ifdef _Z_MEMORYPOOL_THREAD_
pthread_mutex_init(&mp->lock, NULL);
#endif
char* s = (char*) malloc(sizeof(_MP_Memory) +
sizeof(char) * mp->mem_pool_size);
if (!s) return NULL; //HERE!!!!!!!!!!!!!!!!!!!!, leads mem leak as mp is not free yet :-)
......
}