内存模型--栈/stack

表白:黑白圣堂血天使,天剑鬼刀阿修罗。 
讲解对象:/内存模型--栈/stack
作者:融水公子 rsgz
汇编教程

汇编教程 http://www.rsgz.top/post/91.html

分给应用的那块内存,还有另一部分就是栈/stack了,栈主要是给函数用的。它和帧是相反的,从高位到低位增长。

像这种简单的函数,包含了两个函数main()和add_a_and_b()

int main() {
   int a = 2;
   int b = 3;
   return add_a_and_b(a, b);
}

然后执行函数的时候呢,栈会为了这两个函数建立两个对应的帧。帧里面分别放着各自的变量。调用栈有多少层,就有多少帧,就有多少个函数。add_a_and_b运行结束,它的帧就会被回收,系统会回到函数main刚才中断执行的地方,继续往下执行。通过这种机制,就实现了函数的层层调用,并且每一层都能使用自己的本地变量。

特点:新的帧,叫做"入栈",英文是 push;栈的回收叫做"出栈",英文是 pop,从内部函数最先释放,我们就知道了这个规律了。所有的帧释放了,栈就释放了。

为了记忆:结束高位,栈帧函数
                 结束高位,战争函数

随心画一幅,不要嫌我画的丑

===

公众号:小雪妃

谢谢大家的支持!可以点击我的头像,进入我的空间浏览更多文章呢。建议大家360doc[www.360doc.com]注册一个账号登录,里面真的有很多优秀的文章,欢迎大家的到来。
---

(0)

相关推荐