### 2.24 `mallinfo`, `malloc_stats`, `mallopt`—malloc support

Synopsis

         #include <malloc.h>
         struct mallinfo mallinfo(void);
         void malloc_stats(void);
         int mallopt(int parameter, value);

         struct mallinfo _mallinfo_r(void *reent);
         void _malloc_stats_r(void *reent);
         int _mallopt_r(void *reent, int parameter, value);

Description
`mallinfo` returns a structure describing the current state of memory allocation. The structure is defined in malloc.h. The following fields are defined: `arena` is the total amount of space in the heap; `ordblks` is the number of chunks which are not in use; `uordblks` is the total amount of space allocated by `malloc`; `fordblks` is the total amount of space not in use; `keepcost` is the size of the top most memory block.

`malloc_stats` print some statistics about memory allocation on standard error.

`mallopt` takes a parameter and a value. The parameters are defined in malloc.h, and may be one of the following: `M_TRIM_THRESHOLD` sets the maximum amount of unused space in the top most block before releasing it back to the system in `free` (the space is released by calling `_sbrk_r` with a negative argument); `M_TOP_PAD` is the amount of padding to allocate whenever `_sbrk_r` is called to allocate more space.

The alternate functions `_mallinfo_r`, `_malloc_stats_r`, and `_mallopt_r` are reentrant versions. The extra argument reent is a pointer to a reentrancy structure.

Returns
`mallinfo` returns a mallinfo structure. The structure is defined in malloc.h.

`malloc_stats` does not return a result.

`mallopt` returns zero if the parameter could not be set, or non-zero if it could be set.

Portability
`mallinfo` and `mallopt` are provided by SVR4, but `mallopt` takes different parameters on different systems. `malloc_stats` is not portable.