Example #1
0
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;
}
Example #2
0
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;
}