question1: 函数内 存在 栈区
默认栈的大小是1M
系统的做法:应用程序总共有1M的空间 想象成一座高楼 一层一层垒起来
每一层叫做栈帧;一个函数住一楼 一个栈帧
int fun(int a){
a+=10;
return a;
}
AddInt(int a,int b)
{
int c =a +b ;
return c; //不能有两个return值
}
若局部变量大于这一层,则给他分两层即可,以此类推;
问题一层有多大呢?一个栈帧有多大?
调用函数:int z = AddInt(x,y); //c的**函数调用实参到形参是从右往左**
y->b ,x->a 进入函数内部
从内存角度分析:
给主函数分配一些栈帧(楼下的),给AddInt函数分配另一些栈帧(楼上的)
当AddInt函数调用完后,释放所占用的栈帧(客人走了不用给他留房了)
如果我的函数没有写return 0呢 还释放栈帧吗?
函数的调用过程(栈帧)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fistraiser/article/details/80270473
question2:
从内存角度继续分析:
//顺序读入的时候是入栈 释放函数的时候出栈
//使用房间的时候可以先不入住 先预定 先给他开一个栈帧
//涉及到后面的递归 ,调你一次开辟一个栈帧