The hashkit_create() function initializes a hashkit object for use. If
you pass a NULL argument for hash, then the memory for the object is
allocated. If you specify a pre-allocated piece of memory, that is
initialized for use.
The hashkit_clone() function initializes a hashkit object much like
hashkit_create(), but instead of using default settings it will use
the settings of the ptr hashkit object.
The hashkit_free() frees any resources being consumed by the hashkit
objects that were initialized with hashkit_create() or hashkit_clone().
The hashkit_is_allocated() reports where the memory was allocated
for a hashkit object.
hashkit_create() and hashkit_clone() will return NULL on failure or
non-NULL on success.
hashkit_is_allocated() returns true if the memory for the hashkit
object was allocated inside of hashkit_create() or hashkit_clone(),
otherwise it is false and was user-supplied memory.