### _uflush -- Release Unused Memory from Memory Pool

Format

>     #include <umalloc.h>
>     int _uflush(Heap_t uh, size_t poolsize);

Language Level: Extension
_uflush reduces the size of the pool, and returns the unused memory blocks to the main heap for future allocations. _uflush is like _heapmin, except that _uflush passes a size to flush a particular allocation size, and _uflush does not return the unused memory to the system. A size of 0 will flush the entire pool.

Note: Because sizes are rounded up to the _ALIGNx boundary, objects of sizes other than the specified size may be freed by the call to _uflush.

Return Value
If successful, _uflush returns 0.

Example
In this example, _upool is invoked to create a transparent memory pool, and then _uflush is called to return all the storage to the heap.

    #include <stdlib.h>
    #include <stdio.h>
    #include <umalloc.h>

    int main(void)
    {
       char *p1, *p2;

       if (_upool(_RUNTIME_HEAP, 1, 128, 1000, _ALIGN8))
          printf ("Function _upool failed.\n");

       p1 = (char*)malloc(32);   /* allocation will be from pool */
       p2 = (char*)malloc(200);  /* allocation will not be from pool */
       free(p1);
       free(p2);

       if (_uflush(_RUNTIME_HEAP, 0)) /* flush the entire pool */
          printf ("Function _uflush failed.\n");

       return 0;
    }

_heapmin -- Release Unused Memory from Default Heap
_upool -- Create a Memory Pool
<stdlib.h>
<stdio.h>
<umalloc.h>