编译原理第八章 运行时的存储组织与管理

本文探讨了程序设计语言中的三种主要存储环境:完全静态环境、基于栈的存储环境和基于堆的存储环境。详细解释了每种环境的特点,如静态存储分配在编译时即可确定所有数据空间;栈式存储分配适用于递归调用;堆式存储分配则用于数据对象的自由分配和释放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

几乎所有的程序设计语言都使用如下三种类型的存储环境:
完全静态环境、基于栈的存储环境和基于堆的存储环境的一种或几种。

静态存储分配

最简单的运行时的环境类型是所有的数据都是静态的。如果在编译时就能确定目标程序运行中所需要的全部数据空间的大小,则编译时就能安排好目标程序的全部数据空间。

栈式存储分配

在运行递归调用且每次调用都要重新分配局部变量的语言中,需要使用栈式存储分配,其分配策略:将整个存储空间设计为一个栈,每调用一个过程就将它压入栈。

堆式存储分配

程序语言允许数据对象能自由地分配和释放,需要使用堆式存储分配方法。
基本思想:一个程序执行时有存储空间,当运行期间需要时就从里面申请一块存储空间,使用完毕归还,多次后,将变成不相邻的碎片块区域。

其他

目标代码区用于存放生成的目标代码,它的长度可以在编译时确定
全程/静态数据区用于存放编译时所能确定占用空间大小的数据
堆、栈用于存放可变数据以及管理过程活动的控制信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值