You copied the Doc URL to your clipboard.

Run-time memory models

ARM Compiler toolchain provides the following run-time memory models:

One-region model

The application stack and heap grow towards each other in the same region of memory. See Figure 7. In this run-time memory model, the heap is checked against the value of the stack pointer when new heap space is allocated, for example, when malloc() is called.

Figure 7. One-region model

Figure 7. One-region model

LOAD_FLASH ...
{
    ...
    ARM_LIB_STACKHEAP 0x20000 EMPTY 0x20000  ; Heap and stack growing towards
    { }                                      ; each other in the same region
    ...
}

Two-region model

The stack and heap are placed in separate regions of memory, see Figure 8. For example, you might have a small block of fast RAM that you want to reserve for stack use only. For a two-region model you must import __use_two_region_memory.

In this run-time memory model, the heap is checked against the heap limit when new heap space is allocated.

Figure 8. Two-region model

Figure 8. Two-region model

LOAD_FLASH ...
{
    ...
    ARM_LIB_STACK 0x40000 EMPTY -0x20000  ; Stack region growing down
    { }                                   ; 
    ARM_LIB_HEAP 0x28000000 EMPTY 0x80000 ; Heap region growing up
    { }
    ...
}

In both run-time memory models, the stack grows unchecked.

See also

Concepts

Using ARM C and C++ Libraries and Floating-Point Support: