User Tools

Site Tools


handbook:handbook:stack

Understanding Stack Overflow

The stack is a region of memory on which local automatic variables are created and function arguments are passed. The implementation allocates a default stack size per process. On modern operating systems, a typical stack has at least 1 megabyte, which is sufficient for most purposes. Under anomalous conditions, the program exceeds its stack limit. This causes a stack overflow. The two most common causes for a stack overflow is an infinite recursion, as in:

int f(){ g(); } int g() { f(); }

f() calls g(), which in turn calls f() and so on. Eventually, the stack overflows. Another common cause for stack overflow is an attempt to create a large array on the stack, for example:

int main() { int n[10000000]; array is too large int j =0; j's address exceeds the stack's limits, error }

If your program crashes due to a stack overflow, check for infinite recursion or too large local objects.

handbook/handbook/stack.txt · Last modified: 2010/04/15 21:18 (external edit)