Format
#include <stdlib.h> /* also in <malloc.h> */ int _theapmin(void);
Language Level: Extension
_theapmin returns all unused tiled memory from the runtime heap
to the operating system. _theapmin works just like _heapmin,
except that it returns only tiled memory; _heapmin returns only
regular memory.
You can call _theapmin explicitly, or specify the /Gt compiler option to map all _heapmin calls to _theapmin.
Note: When you specify /Gt, all calls to regular debug memory management functions (calloc and so on) are mapped to their tiled equivalents. However, if you parenthesize the function calls, they are not mapped.
A debug version of this function, _debug_theapmin, is also available. Use the /Tm option to map _theapmin calls to _debug_theapmin.
Return Value
If successful, _theapmin returns 0; otherwise, it returns -1.
Example
This example allocates and frees memory from the tiled runtime
heap, and then uses _theapmin to return any unused memory to the
tiled heap.
Note: You must compile this example with the /Gt option to enable tiled memory.
#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);
/* _theapmin will attempt to return the freed object to the system. */
if (0 != _theapmin()) {
puts("_debug_theapmin returns failed.\n");
exit(EXIT_FAILURE);
}
return 0;
}
![]()
_debug_heapmin -- Release Unused Memory
_debug_theapmin -- Release Unused Tiled
Memory
_heapmin -- Release Unused Memory from
Default Heap
_tcalloc -- Reserve Tiled Storage Block
_tfree -- Free Tiled Storage Block
_tmalloc -- Reserve Tiled Storage Block
_trealloc -- Reallocate Tiled Storage Block
_uheapmin -- Release Unused Memory in User
Heap
<malloc.h>
<stdlib.h>
/Tm compiler option
/Gt compiler option