Stack Overflow
What causes a stack overflow error, and how can it be prevented?
A stack overflow error occurs when a program attempts to use more memory space than is available on the call stack. This typically happens due to:
- Excessive recursion without a proper base case
 - Very large local arrays or structs
 - Deep or infinite function call chains
 
Example of a function that may cause stack overflow:
void infinite_recursion() {
  // Recursive call with no base case
  infinite_recursion();
}To prevent stack overflow:
- Ensure recursive functions have a well-defined base case that stops recursion.
 - Avoid allocating large arrays or structs on the stack. Consider using dynamic allocation on the heap instead.
 - Optimize function call chains to reduce stack usage.
 - Increase stack size if necessary (not always possible).
 
Example of proper recursion with a base case:
void countdown(int n) {
  if (n == 0) {// Base case
    std::cout << "Countdown finished!\n";
    return;
  }
  std::cout << n << '\n';
  countdown(n - 1); // Recursive call
}By understanding the limitations of the stack and employing good programming practices, you can avoid stack overflow errors in your C++ programs.
Memory Management and the Stack
Learn about stack allocation, limitations, and transitioning to the Free Store