### 4.2 Allocation handler

It is possible to make Libgcrypt use special memory allocation functions instead of the built-in ones.

Memory allocation functions are of the following types:

Data type: gcry_handler_alloc_t

  This type is defined as: `void *(*gcry_handler_alloc_t) (size_t n)`.

Data type: gcry_handler_secure_check_t

  This type is defined as: `int *(*gcry_handler_secure_check_t) (const void *)`.

Data type: gcry_handler_realloc_t

  This type is defined as: `void *(*gcry_handler_realloc_t) (void *p, size_t n)`.

Data type: gcry_handler_free_t

  This type is defined as: `void *(*gcry_handler_free_t) (void *)`.

Special memory allocation functions can be installed with the following function:

Function: void gcry_set_allocation_handler (gcry_handler_alloc_t func_alloc, gcry_handler_alloc_t func_alloc_secure, gcry_handler_secure_check_t func_secure_check, gcry_handler_realloc_t func_realloc, gcry_handler_free_t func_free)

  Install the provided functions and use them instead of the built-in functions for doing memory allocation. Using this function is in general not recommended because the standard Libgcrypt allocation functions are guaranteed to zeroize memory if needed.

  This function may be used only during initialization and may not be used in fips mode.