Tuesday 8 November 2011

What is the stack? in C programming

What is the stack?

The stack is where all the functions’ local (auto) variables are created. The stack also contains some
information used to call and return from functions

A “stack trace” is a list of which functions have been called, based on this information. When you start using
a debugger, one of the first things you should learn is how to get a stack trace.
The stack is very inflexible about allocating memory; everything must be deallocated in exactly the reverse
order it was allocated in. For implementing function calls, that is all that’s needed. Allocating memory off the stack is extremely efficient. One of the reasons C compilers generate such good code is their heavy use of a simple stack.

There used to be a C function that any programmer could use for allocating memory off the stack. The memory was automatically deallocated when the calling function returned. This was a dangerous function
to call; it’s not available anymore.

Cross Reference:

VII.15: Can the size of an array be declared at runtime?
VII.21: What is the heap?

No comments:

Post a Comment