Alice wants other things to go on the stack, too, like temporary buffers for storing data that only subroutine B needs.  That way, when subroutine B returns execution to A the return pointer is popped off the stack, but also on the stack is all of B’s temporary memory which needs to be taken off the stack and destroyed.
•Buffer – A buffer is an area in a computers memory to store data.  If it is a single piece of data, such as a number or a single character, then its storage space is usually not referred to as a buffer.  The real definition of a buffer is somewhere where data is stored temporarily, but the term buffer is often used more loosely.
•Pointer – Pointers point to something in the computers memory.  Everything stored in a computer is stored as a number, including pointers.  A pointer is a number that is the references another place in memory by its address.
•Denial-of-service – Sometimes if a program is needed by multiple users (on a network, for example) and an attacker crashes it, no one else can access it.
•Core dump – A core dump occurs sometimes when a program crashes.  Basically, everything that was in that program’s memory is written out to an unprotected file, and sometimes this data is security-sensitive.
•Address – An address in a computer’s memory is the same as the address in a mailbox.  If your box number in the mailroom is 232, then 232 is called your address.  The same is true for data and programs stored in a computer’s memory.
•Bit – A computer stores numbers using bits.  A bit can be only one of two things: a 1 or a 0.
•Byte – A byte is an 8 bit number, such as 10011110.  A byte can store a number from 0 through 255, or 00000000 through 11111111 in binary.
•Compiled – A compiler takes the source code a programmer has written and turns it into code text that a computer can easily execute.  Code text is a sequence of instructions for the computer stored in memory.
•