Format
#include <umalloc.h> int _heapset(Heap_t heap, unsigned int fill);
Language Level: Extension
_uheapset checks the heap you specify for minimal
consistency by checking all allocated and freed objects on the
heap (similar to _uheapchk). It then sets each byte of the heap's
free objects to the value of fill.
Using _uheapset can help you locate problems where your program continues to use a freed pointer to an object. After you set the free heap to a specific value, when your program tries to interpret the set values in the freed object as data, unexpected results occur, indicating a problem.
_uheapset works just like _heapset, except that you specify the heap to check; _heapset always checks the default heap.
Note: Using the _uheapchk, _uheapset, and _uheap_walk functions (and their equivalents for the default heap) may add overhead to each object allocated from the heap.
Return Value
_uheapset returns one of the following values, defined
in both <umalloc.h> and <malloc.h>:
| _HEAPBADBEGIN | The heap specified is not valid. It may have been closed or destroyed. |
| _HEAPBADNODE | A memory node is corrupted, or the heap is damaged. |
| _HEAPEMPTY | The heap has not been initialized. |
| _HEAPOK | The heap appears to be consistent. |
Example
This example creates a heap and allocates and frees
memory from it. It then calls _uheapset to set the freed memory
to a value.
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <malloc.h>
int main (void)
{
char *ptr;
int rc;
if (NULL == (ptr = (char*)malloc(10))) {
puts("Could not allocate memory block.");
exit(EXIT_FAILURE);
}
memset(ptr,'A',5);
free(ptr);
if (_HEAPOK != (rc = _heapset('X'))) {
switch(rc) {
case _HEAPEMPTY:
puts("The heap has not been initialized.");
break;
case _HEAPBADNODE:
puts("A memory node is corrupted or the heap is damaged.");
break;
case _HEAPBADBEGIN:
puts("The heap specified is not valid.");
break;
}
exit(rc);
}
return 0;
}
![]()
Managing Memory with
Multiple Heaps
Memory Management
![]()
_heapmin -- Release Unused Memory from
Default Heap
_heapset -- Validate and Set Default
Heap
_uheapchk -- Validate Memory Heap
_uheap_walk -- Return Information
about Memory Heap
<umalloc.h>