A single real allocator (first-fit free list + bump pointer, matching heap_manager.cpp exactly) driving three views below: a guided replay of the push_back.svg growth scenario, a free-form sandbox, and a byte-level header inspector. Nothing here is scripted text — every number comes from actually running the algorithm.
Sets up an int vector at capacity 2 and fills it, then runs one real push_back(vec, 30) call. Each card below is generated from that call's actual log output, not pre-written.
scenario: vec_int_init(2); push_back(10); push_back(20); — now full
Create as many int/double vectors as you like, push them past capacity, free them, and watch both free lists (kept separate, matching the actual source) recycle blocks.
create a vector
active vectors
heap layout click a block to inspect it below
free lists
execution log
Select a block in the sandbox heap above, then click a field to see its exact byte range within that block.
16-byte block header
selected block