Let's look at the following example and see how the local variables are set in the stack area:
void f1()
{
int a;
short b[4];
double c;
f2();
f3();
}
When we call f1() function, space needs to be set aside. The following picture shows activation records/stack frame:
When the function f1() is called, the stack pointer will be decremented by 20 bytes which is the size of the variables of f1().
void f2()
{
int x;
char *y;
char *z[2];
f3();
}
void f3()
{
double m[3];
int n;
}
The following diagram shows the movement of stack pointer, sp: f1()->f1.f2()->f2.f3()->f2.f3() exits->f1.f2() exits.
After the f1.f2(), when we call f1.f3(), the variables of the function f3() simply overwrites them onto the area where the variables of f2() were.
No comments:
Post a Comment