The memory set aside for each function's call-by-value parameters and local variables is set aside only temporarily. When a function is called, memory chunks are pushed onto the end of an area of memory called the stack; after a function returns, the memory in those chunks is overwritten as soon as subsequent function calls cause new memory chunks to be pushed onto the stack.