存储组织
Last updated
Last updated
为数据分配安排存储位置;确定访问变量时使用的机制;过程之间的连接、参数传递。
我们关注的主题是存储管理(栈分配、堆管理、垃圾回收)和对变量、数据的访问。
目标程序的代码放置在代码区;静态区、堆区和栈区分别放置不同类型生命期的数据值。
为了管理过程在一次执行中所需要的信息,使用一个连续的存储块,这样的块称为活动记录(Action Record)。
静态分配
编译器在编译时刻就可以做出存储分配决定,不需要考虑程序运行时刻的情形
全局常量、全局变量
名字在程序被编译时绑定到存储单元,不需要运行时的支持。绑定的生存期是程序的整个运行期间,例如C程序的外部变量、静态局部变量(static)以及程序中出现的常量都可以静态分配。
动态分配
栈式存储:和过程的调用/返回同步进行分配和回收,值的生命期与过程生命期相同
堆存储:数据对象可比创建它的过程调用更加长寿(手工进行回收、垃圾回收机制)