您的位置:首页 > 其它

如何确定程序中栈的增长方向

2011-09-30 13:17 197 查看
函数调用时参数入栈,因此可以定义两个函数,分别输出参数地址,以此来确定栈的生长方向。

//确定栈的生长方向
//自定义函数fun1() 和fun2(),其中fun1()内部调用fun2(),输出参数地址
#include<stdio.h>

void fun2(int b) { printf("fun2: %ld\n", &b);}

void fun1(int a) { 
	printf("fun1: %ld\n", &a);
	fun2(a);
}
int main( ) {

	int a = 1;
	fun1(a);

	return 0;
}


result:

[scwangj@LB270107 cfd_simple]$ gcc -o hello hello.c
[scwangj@LB270107 cfd_simple]$ ./hello
fun1: 140735673261756
fun2: 140735673261724
[scwangj@LB270107 cfd_simple]$
上述程序中,首先fun1被调用,参数a入栈;在fun1函数内部,先输出参数fun1函数的参数a的地址,然后调用fun2,fun2的参数b入栈;从结果来看,linux下栈的生长方向由高地址向低地址增长。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: