运行时存储空间的组织第六章本章要求•主要内容:程序的静态文本与它运行时的活动之间的关系,源程序运行时各种对象的存储空间主要有三种方式分配方式:静态存储分配、栈式存储分配和堆式存储分配•重点掌握:源程序运行时的活动,参数传递方式,程序中名字的作用域,局部数据区的内容,存储空间的分配方式6
1程序执行时的活动•静态和动态的联系–名字和数据对象–数据对象的动态表示–名字的作用域–数据对象的存储分配–过程和活动–参数处理•运行时支撑程序包过程相关的几个概念•过程定义是一个声明,它的最简单的形式是把一个标识符(过程的名字)和一段语句联系起来
•当过程名出现在可执行语句中时,则称过程在该点被调用•出现在过程定义中的标识符称为形式参数(或形参)•出现在过程调用中的标识符或常数称为实在参数(或实参)•一个过程的一次执行指的是从过程体的起点开始,最后退出该过程,将控制返回到该过程被调用之后的位置
•一个过程的活动指的是该过程的一次执行
就是说,每次执行一个过程体就产生该过程的一个活动
•从执行该过程体的第一步操作到最后一步操作之间的操作序列所花的时间称为该过程的一个活动的生存期声明的作用域•语言中名字的声明是把信息与名字联系起来的语法结构
•区分同名程序声明:最接近的嵌套规则inta,b;int*p;intfoo(inta){intb,c;char*p;p=malloc(sizeof(char));b=foo(1);…}•作用域:一个声明起作用的程序部分称为该声明的作用域•局部和非局部:过程中名字的出现,如果是在该过程的一个声明的作用域内,则这个出现称为局部于该过程参数的传递•传地址(常用):把实在参数的地址传递给相应的形式参数•传值(常用):调用段把实在参数的值传给被调用段
被调用段把实参值抄进形式单元中,再使用
•得结果:形式参数对应有两个单元,第一个单元放实参的地址,第二个单元放实参的