打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
内存模型--栈/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]注册一个账号登录,里面真的有很多优秀的文章,欢迎大家的到来。
---
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c语言中的全局数组和局部数组
细谈Go变量的内存分布
Reverse engineering : What we need to know as a DBA ? | Hatem Mahmoud Oracle's blog
用gdb观察函数调用过程中栈上的那些事儿
程序中的数据在内存中的布局
程序中关于堆栈大小的划定
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服