zoukankan      html  css  js  c++  java
  • 栈机制

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

    1.运行时内存布局

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

                                       进程空间

                    代码区    ----> | code area

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

                    堆区      ----> | heap area

                    栈区      ----> | Stack area

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

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

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

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

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

    栈---

    栈是一种数据结构

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

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

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

    3)传递参数;

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

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

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

    7)返回调用函数。

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

  • 相关阅读:
    安卓开发_求好评功能
    安卓开发_深入理解Content Provider
    安卓开发_数据存储技术_sqlite
    安卓开发_慕课网_Fragment实现Tab(App主界面)
    安卓开发_数据存储技术_外部存储
    Go语言基础之数组
    Go语言基础之结构体
    Go操作MySQL
    Go语言基础之文件操作
    Go第三方日志库logrus
  • 原文地址:https://www.cnblogs.com/beili/p/9272736.html
Copyright © 2011-2022 走看看