函数调用
各位大神们,小弟问一下,c语言在函数调用前后系统都做了什么操作
例子:
int sum(int sum )
{
int i;
for(i = 0; i < 10;i++)
sum += i;
return 0;
}
int main(int argv,int **argc)
{
int sun;
printf("sum = %d\n",sum);
return 0;
}
这个简单的程序在main函数调用 sum()函数的时候系统都做了什么?还望相告!!
------解决方案--------------------你把这段代码编译成汇编代码就明白了,函数调用时会进行堆栈的保护,退出时对资源释放.
------解决方案--------------------程序有问题吧,sum没有调用,只是输出了函数的地址。
简单来说,函数调用前会将参数压栈,将返回地址压栈,然后执行跳转,跳到函数代码的起始位置,然后参数出栈,执行函数代码,完成后返回值压栈,根据执行前的返回地址跳转,继续执行
------解决方案--------------------楼主可以用objdump -d <程序名>
看看反汇编的内容
循环要高一些