rbt rbt_free(rbt r) { if (NULL == r) return NULL; rbt_free(r->left); rbt_free(r->right); free(r->key); free(r); return r; }
void rbt_free_kernel(rbt_node** n) { // in order tree traverse if( *n != NIL ) { rbt_free(&(*n)->left); rbt_free(&(*n)->right); // printf("%p key:%p left%p right%p parent:%p\n", *n, (*n)->key, (*n)->left, (*n)->right, (*n)->parent); (*n)->left = NULL; (*n)->right = NULL; (*n)->parent = NULL; (*n)->associated_LRU_elem = NULL; (*n)->key = NULL; free(*n); } }
/**********************************************************************//** Frees an index memory object. */ UNIV_INTERN void dict_mem_index_free( /*================*/ dict_index_t* index) /*!< in: index */ { ut_ad(index); ut_ad(index->magic_n == DICT_INDEX_MAGIC_N); #ifdef UNIV_BLOB_DEBUG if (index->blobs) { mutex_free(&index->blobs_mutex); rbt_free(index->blobs); } #endif /* UNIV_BLOB_DEBUG */ mem_heap_free(index->heap); }
void rbt_i64_free_cb (rbt_t *rbt, void (*callback)(rbt_i64_node_t *)) { rbt_free(rbt, (void(*)(void *))callback); }
void rbt_i64_free (rbt_t *rbt) { rbt_free(rbt, NULL); }
void rbt_i32_free (rbt_t *rbt) { rbt_free(rbt, NULL); }