美文网首页
编译器笔记39-运行存储分配-静态存储分配

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

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

静态存储分配

在静态存储分配中,编译器为每个过程确定其活动记录在目标程序中的位置。这样,过程中每个名字的存储位置就确定了。因此,这些名字的存储地址可以被编译到目标代码中。过程每次执行时,它的名字都绑定到同样的存储单元。

静态存储分配的限制条件

  • 适合静态存储分配的语言必须满足以下条件
    1.数组上下界必须是常数
    2.不允许过程的递归调用
    3.不允许动态建立数据实体

  • 满足这些条件的语言有BASIC和FORTRAN

常用的静态存储分配方法

  • 顺序分配法
  • 层次分配法
顺序分配法
  • 按照过程出现的先后顺序逐段分配存储空间
  • 各过程的活动记录占用互不相交的存储空间
顺序分配法.png
层次分配法

通过对过程间的调用关系进行分析,凡属无相互调用关系的并列过程,尽量使其局部数据共享存储空间。

层次分配法.png 层次分配法.png 层次分配法.png 层次分配法.png

相关文章

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

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

  • Java 堆/栈 GC相关

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

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

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

  • C语言变量存储

    C语言中的变量按照生存周期来区分,可以分为静态存储和动态存储。一、静态存储静态存储是在程序运行过程中分配固定的存储...

  • iOS开发技能树之C语言-存储方式、类别

    存储方式 C语言根据变量的生存周期来区分,分为静态存储方式和动态存储方式。 静态存储方式:在程序运行期间分配固定存...

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

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

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

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

  • OC

    变量的存储类别 C语言根据变量的生存周期来划分: 静态存储方式是指在程序运行期间分配固定的存储空间的方式。静态存储...

  • 栈与堆,分不清?

    栈: 用于静态内存分配(static memory allocation) 编译器自动管理,无需手工控制 存储在计...

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

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

网友评论

      本文标题:编译器笔记39-运行存储分配-静态存储分配

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