栈机制

近些天开始看些操作系统的书,对内存管理这一块重新熟悉了下,在嵌入式操作系统中,内存布局有些不同。

 

1.运行时内存布局

一个程序要运行,就要先将可执行程序文件装载到计算机的内存中。装载是操作系统掌控的。一般而言,操作系统将程序装入内存后,将形成一个随时可以运行的进程空间,该进程空间分四个区域:

                                   进程空间

                代码区    ----> | code area

                全局数据区----> | data area

                堆区      ----> | heap area

                栈区      ----> | Stack area

一个运行的程序在内存中表示为这四个空间区域

其中代码区:存放程序的执行代码。所谓执行代码就是索引了一个个函数块代码,它由函数定义块的编译得到。

全局数据区:存放全局数据、常量、文字量、静态全局量和静态局部量。

堆区:存放动态内存,供程序随随机申请使用。

栈区:存放函数数据区(即局部数据区),它动态反映了程序运行中的函数状态,其运行轨迹正好用来观察函数的调用与返回,从而研究其函数机制。

 

 

栈---

栈是一种数据结构

C++在函数调用的过程,需要初始化和善后处理的环节。函数调用的整个过程就是栈空间操作过程。具体过程:

1)建立北调函数的栈空间,栈空间的大小由函数定义体中的数据量多少来决定;

2)保护调用函数的运行状态和返回地址;

3)传递参数;

4)将控制权转交给被调函数;

5)函数运行完成后,复制返回值到函数数据块底部;

6)恢复调用函数的运行状态;

7)返回调用函数。

 

调用一个函数,可以看作是一个栈中元素的压栈和退栈操作。

转载于:https://www.cnblogs.com/beili/p/9272736.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值