首页 文章资讯内容详情

什么是静态分配?

2026-06-02 1 花语

这是最简单的分配方案,其中数据对象的分配在编译时完成,因为每个数据项的大小都可以由编译器确定。静态分配的主要功能是将数据项绑定到特定的内存位置。静态内存分配过程包括确定指令和数据空间的大小。

递归子程序和长度可调的数组在语言中是不允许的。在静态分配中,编译器可以决定每个数据对象所需的存储量。因此,编译器很容易在活动记录中找到这些数据的地址。FORTRAN使用这种存储分配策略。

名称与分配的存储量的绑定在运行时不会改变。因此,这种分配的名称是静态分配。在静态分配中,编译器可以决定每个数据对象所需的存储量。因此,编译器很容易在活动记录中找到这些数据的地址。

在编译时编译器可以填充目标代码可以找到它操作的数据的地址。

调用语句的实现

实现静态分配所需的代码如下-

MOV#here+20,callee.static_area/*保存返回地址*/

GOTOcallee.code_area/*它将控制转移到被调用过程的目标代码*/

在哪里

callee.static_area-活动记录的地址。

callee.code_area-被调用过程的第一条指令的地址。

#here+20−文字返回地址,它是GOTO之后的指令的地址。

return语句的实现

过程被调用方的返回是通过以下方式实现的:

转到*callee.static_area

这会将控制转移到保存在激活记录开头的地址。

行动声明的执行

指令ACTION用于执行动作语句。

停止语句的实现

语句HALT是将控制权返回给操作系统的最后一条指令。

好处

这很容易实施。

它允许在编译期间进行类型检查。

它消除了内存不足的可能性。

缺点

它与递归子程序不兼容。

不能使用其大小必须在运行时确定的变量。

如果数据对象的大小称为编译时间,则可以进行静态分配。

数据结构不能动态创建,也就是说,静态分配不能在运行时管理内存分配。