Closed gongweixue closed 9 months ago
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 :-) ...... }
感谢指出,fixed