The stack is a special memory area used to manage code execution.
The stack is used to:
- store temporary data
- return from functions
- save execution state
Without a stack, it is impossible to:
- call functions nestedly
- handle interrupts
- save context
- the stack grows in a specific direction
- a stack error almost always results in a crash
- the stack must be one of the first to be initialized