### _debug_theapmin -- Release Unused Tiled Memory (OS/2)

Format

>     #include <stdlib.h>   /* also in <malloc.h> */
>     int _debug_theapmin(const char *file, size_t line);

Language Level: Extension
_debug_theapmin is the debug version of _theapmin. Like _theapmin, it returns all unused blocks of tiled memory to the tiled runtime heap.

In addition, _debug_theapmin makes an implicit call to _theap_check to validate the heap.

To use _debug_theapmin, you must compile with the debug memory (/Tm) and tiled memory (/Gt) compiler options. These options map all _heapmin calls to _debug_theapmin.

Note: The /Tm /Gt options map all calls to regular memory management functions to their tiled debug versions. To prevent a call from being mapped, parenthesize the function name.

_debug_theapmin works just like _debug_heapmin except that it releases only memory allocated with the tiled memory management functions.

Return Value
If successful, _debug_theapmin returns 0. A non-zero return value indicates failure. If the heap specified is not valid, _debug_theapmin generates an error message with the file name and line number where the call to _debug_theapmin was made.

Example
This example allocates 60000 bytes of memory, then frees it. The freed memory is kept in the default runtime heap until the call to _debug_theapmin returns it to the operating system. Because no errors are detected by _theap_check, no messages are generated.

Note: You must compile this example with the /Tm /Gt options to map the _heapmin calls to _debug_theapmin.

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

    int main(void)
    {
       char *ptr;

       /* Allocate a large object from the system. */
       if (NULL == (ptr = (char*)malloc(60000))) {
          puts("Could not allocate memory block.\n");
          exit(EXIT_FAILURE);
       }
       memset(ptr, 'x', 60000);

       /* The free will keep large object in runtime. */
       free(ptr);

       /* _debug_theapmin will attempt to return the freed object to the system. */
       if (0 != _heapmin()) {
          puts("_debug_theapmin returns failed.\n");
          exit(EXIT_FAILURE);
       }
       return 0;
    }

Managing Memory with Multiple Heaps
Memory Management

_debug_heapmin -- Release Unused Memory in the Default Heap
_debug_tcalloc -- Reserve and Initialize Tiled Memory
_debug_tfree -- Release Tiled Memory
_debug_tmalloc -- Reserve Tiled Memory
_heapmin -- Release Unused Memory from Default Heap
_theap_check -- Validate User Memory Heap
<malloc.h>
<stdlib.h>
/Tm compiler option
/Gt compiler option