Buffer Overflow Intro. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle.  http://sfsecurity.pr.erau.edu
Stacks are essential
The reason C compilers use stacks is that subroutines can call subroutines that call other subroutines.
Subroutines can call each other, and subroutines
can even call themselves, and you can always keep track of where you were in each subroutine by pushing and popping on and off a stack.