当前位置: 技术问答>linux和unix
关于程序运行时的堆栈地址问题?
来源: 互联网 发布时间:2015-11-01
本文导语: 对于任何一个可运行的程序来说,其中同一函数的堆栈栈侦地址(如EBP)为什么每一次运行都不一样呢? 而且一次比一次地址小 | #include void func(); int main() { func(); return 0; } void func() { in...
对于任何一个可运行的程序来说,其中同一函数的堆栈栈侦地址(如EBP)为什么每一次运行都不一样呢?
而且一次比一次地址小
而且一次比一次地址小
|
#include
void func();
int main()
{
func();
return 0;
}
void func()
{
int i[100];//随意分配的
printf("0x%x mainn", &main);
printf("0x%x funcn", &func);
}
不知道上面的程序符合楼主所说的吗?
上面的程序,每次的运行结果是相同的。
void func();
int main()
{
func();
return 0;
}
void func()
{
int i[100];//随意分配的
printf("0x%x mainn", &main);
printf("0x%x funcn", &func);
}
不知道上面的程序符合楼主所说的吗?
上面的程序,每次的运行结果是相同的。
|
每个程序运行的时候,都有一个虚拟地址空间。而每个程序的堆栈空间是从高地址向低地址伸展的。每调用一个程序,函数的局部变量压栈,就自然往低地址增长啦
|
不清楚,是随机的吧?