概述
几乎所有的程序设计语言都使用如下三种类型的存储环境:
完全静态环境、基于栈的存储环境和基于堆的存储环境的一种或几种。
静态存储分配
最简单的运行时的环境类型是所有的数据都是静态的。如果在编译时就能确定目标程序运行中所需要的全部数据空间的大小,则编译时就能安排好目标程序的全部数据空间。
栈式存储分配
在运行递归调用且每次调用都要重新分配局部变量的语言中,需要使用栈式存储分配,其分配策略:将整个存储空间设计为一个栈,每调用一个过程就将它压入栈。
堆式存储分配
程序语言允许数据对象能自由地分配和释放,需要使用堆式存储分配方法。
基本思想:一个程序执行时有存储空间,当运行期间需要时就从里面申请一块存储空间,使用完毕归还,多次后,将变成不相邻的碎片块区域。
其他
目标代码区用于存放生成的目标代码,它的长度可以在编译时确定
全程/静态数据区用于存放编译时所能确定占用空间大小的数据
堆、栈用于存放可变数据以及管理过程活动的控制信息。