When getsx is called by getbuf, the stack frames look like this: +-------------+ esp ->| | | | | | getsx's stack frame | | ebp ->|getbuf's ebp | +-------------+ |ret addr | +-------------+ | parameter | passed to getsx +-------------+ | | | | | | getbuf's stack frame | main's ebp | +-------------+ |ret addr | +-------------+ | | | | | | main's stack frame | | | | +-------------+