美文网首页
编译器笔记40-运行存储分配-栈式存储分配

编译器笔记40-运行存储分配-栈式存储分配

作者: 衣忌破 | 来源:发表于2020-03-09 22:07 被阅读0次

栈式存储分配

  • 有些语言使用过程、函数或方法作为用户自定义动作的单元,几乎所有针对这些语言的编译器都把它们的有些语言使用过程、函数或方法作为用户自定义动作的单元,几乎所有针对这些语言的编译器都把它们的 ( 至少一部分的) 运行时刻存储以栈的形式进行管理,称为栈式存储分配。

  • 当一个过程被调用时,该过程的活动记录被压入栈;当过程结束时,该活动记录被弹出栈。

  • 这种安排不仅允许活跃时段不交叠的多个过程调用之间共享空间,而且允许以如下方式为一个过程编译代码:它的非局部变量的相对地址总是固定的。

活动树

  • 用来描述程序运行期间控制进入和离开各个活动的情况的树称为活动树
  • 树中的每个结点对应于一个活动。根结点是启动程序执行的main过程的活动
  • 在表示过程p的某个活动的结点上,其子结点对应于被p的这次活动 调用的各个过程的活动。按照这些活动被调用的顺序,自左向右地显示它们。一个子结点必须在其右兄弟结点的活动开始之前结束。

例:一个快速排序程序的概要

例:一个快速排序程序的概要.png 0.png 1.png 2.png 3.png 4.png
  • 每个活跃的活动都有一个位于控制栈中的活动记录
  • 活动树的根的活动记录位于栈底
  • 程序控制所在的活动的记录位于栈顶
  • 栈中全部活动记录的序列对应于在活动树中到达当前控制所在的活动结点的路径

设计活动记录的一些原则

设计活动记录的一些原则.png

相关文章

  • 编译器笔记40-运行存储分配-栈式存储分配

    栈式存储分配 有些语言使用过程、函数或方法作为用户自定义动作的单元,几乎所有针对这些语言的编译器都把它们的有些语言...

  • Java 堆/栈 GC相关

    一、Java程序运行时的内存分配策略 静态分配[静态存储区]/栈分配[栈区]/堆分配[堆区] 1)静态存储区...

  • Android性能优化之常见的内存泄漏

    Java内存分配策略 java程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,堆式分配。对应的三种存储策...

  • 编译器笔记43-运行存储分配-堆式存储分配

    堆式存储分配 堆式存储分配是把连续存储区域分成块,当活动记录或其它对象需要时就分配。 块的释放可以按任意次序进行,...

  • Java 内存分配策略

    Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间...

  • Android:内存泄漏总结

    Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间...

  • android常见内存泄露

    Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间...

  • 编译器笔记38-运行存储分配-运行存储分配概述

    运行存储分配策略 编译器在工作过程中,必须为源程序中出现的一些数据对象分配运行时的存储空间。 对于那些在编译时刻就...

  • 编译器笔记39-运行存储分配-静态存储分配

    静态存储分配 在静态存储分配中,编译器为每个过程确定其活动记录在目标程序中的位置。这样,过程中每个名字的存储位置就...

  • 内存泄漏 快速过一下

    java 内存泄漏 基础知识 java 内存的分配策略 静态分配, 栈式分配,堆式分配对应的 静态存储区,也叫方法...

网友评论

      本文标题:编译器笔记40-运行存储分配-栈式存储分配

      本文链接:https://www.haomeiwen.com/subject/wkemdhtx.html