Stack & Heap
The process memory layout, stack frames pushed and popped by function calls, the heap under `new`/`malloc`/object allocation, and what a stack overflow really is.
The stack is a bump pointer that allocates a function’s locals in one instruction and frees them on return; the heap is an allocator you ask for memory whose lifetime is not tied to any call — and every language you use maps its values onto those two regions differently.
Each call pushes a frame — return address, saved frame pointer, arguments that did not fit in registers, locals and callee-saved registers — and each return pops it; the layout is fixed by a calling convention that varies by platform but always answers the same three questions.
Unbounded recursion pushes frames until the stack pointer crosses into a guard page the kernel deliberately left unmapped; the resulting fault is reported as SIGSEGV, "Maximum call stack size exceeded" or RecursionError depending on who catches it first.
`new Object()`, `obj = SomeObject()` and `malloc(64)` all end in the same place — a user-space allocator handing out slices of pages it obtained from the kernel’s virtual memory system, with the physical memory appearing only when a page is first touched — but the three runtimes take very different routes to get there.