欢迎来到天天文库
浏览记录
ID:62177032
大小:262.00 KB
页数:26页
时间:2021-04-20
《最新红楼梦林黛玉进贾府路线图课件PPT.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、红楼梦林黛玉进贾府路线图东角门荣国府贾赦院厢庑游廊厢庑游廊穿堂南大厅贾政院荣禧堂耳房厢房厢房抄手游廊厢房穿堂贾母前院五间上房穿堂夹道后廊贾母后院抱厦厅影壁凤姐屋北小正房东三间厅大插屏垂花门抄手游廊三层仪门西角门第10章目标程序运行时的存储组织学习目标:掌握:参数传递的几种方式理解:静态存储分配、栈式动态存储分配、堆式动态存储分配的基本思想10.1运行时的存储空间结构当程序运行时,存储区的内容包括:目标代码目标代码的大小在编译时可以静态确定,因此可以把它放在静态确定的区域;目标代码运行时的数据空间数据空间包括:用户定义的各种类型的数据对象;临时工作单元;输入/输出缓冲区等数据空
2、间有三种组织形式:静态数据区、栈区和堆区目标代码区静态数据区栈区堆区目标代码区(code);静态数据区(staticdata):用于存放编译时能确定所占用空间的数据,如全局变量和静态变量堆栈区(stackandheap):用于存放编译时不能确定所占用空间的数据,如可变数据以及管理过程活动的控制信息运行时的存储空间结构如下:自由空间10.2运行时的存储空间分配影响分配策略的因素:源语言的结构特点源语言的数据类型源语言中决定名字作用域的规则编译器具体实现时,采用如下三种分配策略之一或三种的混合形式。这三种方式是:静态存储分配栈式动态存储分配堆式动态存储分配10.2.1静态存储分配
3、指在编译时对数据对象分配固定的存储位置,运行时始终不变。即一旦存储空间的某个位置分配给了某个数据名,则在目标程序的整个运行过程中,此位置(地址)就属于该数据名。由静态存储分配产生的数据区称为静态数据区。静态存储分配适用于不允许递归过程或递归调用,不允许可变体积的数据结构的语言静态存储分配的特点:简单、易于实现例:FORTRAN语言,它所有的数据都属于这一类。例:FORTRAN程序主程序段ProgramCNSUME……子程序段CharacterfunctionPRDUCE()……PRDUCE的数据区CNSUME的数据区PRDUCE的目标代码CNSUME的目标代码代码区静态数据区
4、10.2.2动态存储分配指在运行阶段动态地为源程序中的数据对象分配存储位置实行动态存储分配的语言的特点:允许递归过程允许可变数据结构(可变数组或记录等)允许用户自由申请和释放空间这种程序在编译时无法确定运行时所需数据空间的大小,需待程序运行时动态确定有两种动态存储分配方式:栈式(stack)、堆式(heap)。10.2.3栈式动态存储分配在数据空间中开辟一个栈区,每当调用一个过程时,它所需要的数据空间就分配在栈顶,每当过程工作结束时就释放这部分空间。空间的使用符合先借后还的原则。特点:先借后还,管理简单,空间使用效率高栈式动态存储分配适合于PASCAL、C等典型过程式语言。P
5、rogrammain;全局变量定义;ProcedureR;…End(R);ProcedureQ;…End(Q);主程序执行体End.(main)若主程序调用Q,Q递归调用自己,在Q第二次进入运行后的存储结构为:Q的数据区Q的数据区主程序全局数据区代码区栈区10.2.4堆式动态存储分配在数据空间中开辟一片连续的存储区(通常叫做堆),每当需要时就从这片空间借用一块,不用时再退还。借用与归还未必服从“先借后还”的原则。堆式动态存储分配适合于用户可以自由申请和归还数据空间的语言,如C++。特点:适用范围广,容易出现碎片。如何充分利用空间是个难题。作为存储分配组织的一个原则,能在编译时
6、完成的存储分配尽量采用静态分配方案,避免目标程序中携带许多用于存储分配的指令,以提高目标代码的效率。10.3参数传递过程(函数)是结构化程序设计的主要手段,同时也是节省程序代码和扩充语言能力的主要途径。当一个过程调用其他过程时,调用与被调用之间的通信或者通过全局量,或者由参数传递。掌握编译器使用的参数传递的方法很重要,它们直接影响程序运行的结果。过程定义procedureSWAP(n,m:real);varj:real;beginj:=n;n:=m;m:=jend;参数传递的例子:主程序i:=5;k[i]:=6;SWAP(i,k[i]);过程调用…1.参数参数过程定义中的参数
7、称为形式参数,简称形参。过程调用中的参数称为实在参数,简称实参。实参可以是变量、常量或较复杂的表达式,应与相应的形参在性质上相容。参数传递常用的三种途径:传值(callbyvalue),也称值调用传地址(callbyreference),也称引用调用传名(callbyname),也称“换名”2.传值将实参的值计算出来,然后把它传给被调过程传值的实现:1.在被调过程的数据空间中为每个形参开辟一个形式单元(用以存放相应的实参值)。2.调用过程计算实参的值,并将其值放在对应的形式单元中。3.被调用过程执行时,
此文档下载收益归作者所有