10.7 Dynamic Memory Allocation
The run-time heap is an uninitialized area of data memory that is used for dynamic memory
allocation using the standard C library dynamic memory management functions,
calloc
, malloc
and realloc
along
with the C++ new operator. Most C++ applications will require a heap.
If you do not use any of these functions, then you do not need to allocate a heap. By default, a heap is not created.
In MPLAB X, you can specify a heap size in the project properties for the xc32-ld linker. MPLAB X will automatically pass the option to the linker when building your project.
If you do want to use dynamic memory allocation, either directly, by calling one of the
memory allocation functions, or indirectly, by using a standard C library function that
uses one of these functions, then a heap must be created. A heap is created by
specifying its size on the linker command line using the
--defsym=_min_heap_size
linker command line option. An example of
allocating a heap of 512 bytes using the command line is:
xc32-gcc foo.c -Wl,--defsym=_min_heap_size=512
An example of allocating a heap of 0xF000
bytes using the xc32-g++
driver is:
xc32-g++ vector.cpp -Wl,--defsym=_min_heap_size=0xF000
The linker allocates the heap immediately before the stack.