##### 3.2.2.8 Malloc Tunable Parameters

You can adjust some parameters for dynamic memory allocation with the `mallopt` function. This function is the general SVID/XPG interface, defined in `malloc.h`.

— Function: int mallopt (int param, int value)

> When calling `mallopt`, the param argument specifies the parameter to be set, and value the new value to be set. Possible choices for param, as defined in `malloc.h`, are:

> `M_TRIM_THRESHOLD`
>   This is the minimum size (in bytes) of the top-most, releasable chunk that will cause `sbrk` to be called with a negative argument in order to return memory to the system.
> `M_TOP_PAD`
>   This parameter determines the amount of extra memory to obtain from the system when a call to `sbrk` is required. It also specifies the number of bytes to retain when shrinking the heap by calling `sbrk` with a negative argument. This provides the necessary hysteresis in heap size such that excessive amounts of system calls can be avoided.
> `M_MMAP_THRESHOLD`
>   All chunks larger than this value are allocated outside the normal heap, using the `mmap` system call. This way it is guaranteed that the memory for these chunks can be returned to the system on `free`. Note that requests smaller than this threshold might still be allocated via `mmap`.
> `M_MMAP_MAX`
>   The maximum number of chunks to allocate with `mmap`. Setting this to zero disables all use of `mmap`.
> `M_PERTURB`
>   If non-zero, memory blocks are filled with values depending on some low order bits of this parameter when they are allocated (except when allocated by `calloc`) and freed. This can be used to debug the use of uninitialized or freed heap memory.