Activation Records
stack: an orderly pile or heap
Webster's Dictionary
OVERVIEW
In almost any modern coding language, a function may have local variables that are created upon entry to the function. Several invocations of the function may exist at the same time, and each invocation has its own instantiations of local variables. In the Java method
int f(int x) { int y = x+x; if (y<10) return f(y); else return y-1; }
a new instantiation of x is created (and initialized by f's caller) each time that f is called. Because there are recursive calls, many of these x's exist simultaneously. Similarly, a new instantiation of y is created each time the body of f is entered.
In many languages (including C, Pascal, and Java), local variables are destroyed when a function returns. Since a function returns only after all the functions it has called have returned, we say that function calls behave in last-in-first-out (LIFO) fashion. If local variables are created on function entry and destroyed on function exit, then we can use a LIFO data structure - a stack - to hold them.