alloc_status mem_free() { // ensure that it's called only once for each mem_init // make sure all pool managers have been deallocated // can free the pool store array // update static variables if(pool_store != NULL) { mem_pool_close(&pool_store[0]->pool); } else { return ALLOC_CALLED_AGAIN; } free(pool_store); pool_store = NULL; pool_store_size = 0; pool_store_capacity = 0; return ALLOC_OK; }
alloc_status mem_free() { // verify that mem_free() is called only once for each mem_init() if(pool_store == NULL){ return ALLOC_CALLED_AGAIN; }; // verify all pool managers have been deallocated for(int i=0;i<pool_store_size;i++){ if(pool_store[i] != NULL){ mem_pool_close((pool_pt) pool_store[i]); }; } // free pool store and static variables free(pool_store); pool_store = NULL; pool_store_size = 0; pool_store_capacity = 0; return ALLOC_OK; }