### Function

# GLib HashTable new_full

#### Declaration

    GHashTable*
    g_hash_table_new_full (
      GHashFunc hash_func,
      GEqualFunc key_equal_func,
      GDestroyNotify key_destroy_func,
      GDestroyNotify value_destroy_func
    )

#### Description

Creates a new `GHashTable` like `g_hash_table_new()` with a reference count of 1 and allows to specify functions to free the memory allocated for the key and value that get called when removing the entry from the `GHashTable`.

Since version 2.42 it is permissible for destroy notify functions to recursively remove further items from the hash table. This is only permissible if the application still holds a reference to the hash table. This means that you may need to ensure that the hash table is empty by calling `g_hash_table_remove_all()` before releasing the last reference using g_hash_table_unref().

This function is not directly available to language bindings.

#### Parameters

`hash_func`

  Type: `GHashFunc`

  A function to create a hash value from a key.

`key_equal_func`

  Type: `GEqualFunc`

  A function to check two keys for equality.

`key_destroy_func`

  Type: `GDestroyNotify`

  A function to free the memory allocated for the key used when removing the entry from the `GHashTable`, or `NULL` if you don’t want to supply such a function.

`value_destroy_func`

  Type: `GDestroyNotify`

  A function to free the memory allocated for the value used when removing the entry from the `GHashTable`, or `NULL` if you don’t want to supply such a function.

#### Return value

Type: `GHashTable`

A new `GHashTable`.

The caller of the function takes ownership of the data, and is responsible for freeing it.