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
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.