Stack memory holds local variables and function call information. When you declare int x = 5 inside a function, x lives on the stack. It's created when the function starts and destroyed when it returns.
The stack is fast because allocation is just moving a pointer. No bookkeeping needed. But stack size is limited, typically a few megabytes. Large arrays can overflow it. Stack memory is automatic.
You don't allocate or free it manually. Variables go away when they leave scope. This makes stack memory safe but inflexible for dynamic-sized data.