# FC11 — Static and dynamic allocation This card compares two behaviorally equivalent FreeRTOS object sets. One task, queue and timer are allocated through `heap_4`; the other set uses persistent application-owned buffers and the `*Static` APIs. Idle and timer-service task memory is also supplied by the application, so scheduler startup cannot hide a dynamic allocation. The decisive runtime relation is: ```text H1 < H0 dynamic task + queue + timer consume ucHeap H2 = H1 static equivalents consume no ucHeap H3 = H2 scheduler startup consumes no ucHeap ``` Both branches receive `0xCAFE` and execute exactly one timer callback. Handles of dynamic objects must lie in `ucHeap`; handles of static objects must point to named persistent buffers outside that arena. ```sh make clean make task1 host-test check-abi sim check-determinism python3 /home/user/dev/workspace/stem/tools/card-layouts/tools/build_freertos_c_card.py . python3 /home/user/dev/workspace/stem/tools/card-layouts/tools/render_card.py . ```