c语言中的栈分布。
|
高地址:存储命令行参数和环境变量.
|
|
栈
|
|
堆
|
|
未初始化的数据:由exec初始化位0
|
|
初始化的数据
|
|
低地址:正文
|
其中正文段和初始化的数据段是由exec从程序文件中读入。
先讲栈,函数中的参数是在栈里的,但是传入的方式要根据调用约定,例如在通常的x86系统中,是通过push和pop来传递参数,而在x64中,则普遍是通过直接mov了。
在函数里,声明的变量被称为局部变量,也可以被称为自动变量,是被分配在栈中的。
例如:
int test()
{
int i=3;
{
int j=2;
int i=1;
}
}
调用函数开辟了新栈,通过bp=sp和sp- x来开辟新栈,bp保留上次的sp值,sp减去某个值x来改变栈,在函数test中,i被分配test的栈里.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29454248/viewspace-1074275/
,如需转载,请注明出处,否则将追究法律责任。