Stack Frame

Call a function, push a box onto the stack. Inside the box: your locals, the return address, the arguments. Function returns, the box pops off, memory reclaimed for free — no allocator involved.

call f()    call g() from inside f()
┌──────┐    ┌──────┐
│  f   │    │  g   │  ← new frame on top
└──────┘    ├──────┤
            │  f   │
            └──────┘