I was wondering what does the blank part means, and what does the arrow means. if anyone can help with this. thank you so much.
1 Answers
That area is usually used by the stack section, because the stack can grow/shrink based on the depth of current call stack. as your link states that
The process Stack contains the temporary data such as method/function parameters, return address and local variables.
How the depth of call stack grows?
To really understand this you would have to know how assembler deals with function calls. but I will try to provide a simple explanation. So when your code calls a function, its associated data is pushed to stack and the stack grows downward and when the execution of function completes, its local data is no longer needed so the stack shrinks back.
But when your code contains nested function calls, that is function A calls function B and function B calls function C. in this case stack keeps growing.
And if your code contains too many nested function calls, stack of your process may expand such that there is no more empty area. when that happens (probably when you implement a recursive function without correct base case), we get our beloved stack overflow error.
Following section provides a visual explanation of this process
let's say you are running a program and in pseudo code it looks something as following
fun first(arguments){
second();
}
fun second(arguments){
third();
}
fun third(arguments){
print("hello");
}
fun main(){
first(arguments); // line 1
third(arguments); // line 2
}
When your program starts, its memory block would look something as following.
Because as your program starts it calls the main method, the stack will hold all the local variable associated with the main function.
When main function calls the first function, stack will grow downward as local variable and other stuff related to first function would be pushed to stack. so it look as following.
because first function internally calls second and second function internally calls third the stack will expand to accommodate all the data associated with second and third functions.
Please note that stack would only grow for nested function calls. for example when first line in main function has executed and the execution moves to line 2, stack will decrease in size.
- 7,946
- 3
- 29
- 46


