编译原理-运行时刻环境 课后习题+笔记

运行时刻环境

来源:龙书(厚),南大课后作业

p283 7.2.4

在这里插入图片描述

Answer

在这里插入图片描述
我们不妨将 g 的调用者称为 h,并给各个空间标号。

  1. h 创建了 0~ 2 号空间,g 创建了 3~6 号空间,f 创建了 7 号空间。

  2. h 写入了 y 和指向 h 的控制链的值;g 写入了 j, x 和指向 g 的控制链的值;f 写入了 i 和 f 的返回值。

  3. 如图所示,0~ 3 号空间属于 g 的活动记录,4~7 号空间属于 f 的活动记录。

知识点
  • 活动树栈分配活动记录调用/返回代码序列
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述

p303 7.5.1

当下列聿件发生时,图7-19中的对象的引用计数会发生哪些改变?

  1. 从A指向B的指针被删除。
  2. 从X指向A的指针被册除。
  3. 结点C被删除。
    在这里插入图片描述
Answer
  1. 从A指向B的指针被删除
    在这里插入图片描述

  2. 从X指向A的指针被删除
    在这里插入图片描述

  3. 结点C被删除
    在这里插入图片描述

知识点
  • 在这里插入图片描述
  • 在这里插入图片描述

p303 7.5.2

当图7-20中的从A到D的指针被删除时,引用计数会发生什么样的改变?
在这里插入图片描述

Answer

在这里插入图片描述
A->D被清除后,D, F, G 均无法被访问到,D->G, D->H, D->F, G->H, F->I 的指针均被清除。引用计数变化如下:
在这里插入图片描述

知识点
  • 在这里插入图片描述

p311 7.6.1

在这里插入图片描述
在这里插入图片描述

Answer
   before:     A.reached =  … = I.reached = 0  
               Unscanned = []

   line1:      A.reached = 1
               Unscanned.push(A)
              
   line2~7:
   
       loop1:  Unscanned.shift()
               C.reached = 1
               Unscanned.push( C )
               
       loop2:  Unscanned.shift()
               F.reached = 1
               Uncanned.push(F)
               
       loop3:  Unscanned.shift()
               H.reached = 1
               Uncanned.push(H)
               
       loop4:  Unscanned.shift()
               I.reached = 1
               Uncanned.push(I)
               
       loop5:  Unscanned.shift()
               G.reached = 1
               Uncanned.push(G)
               
       loop6:  Unscanned.shift()
               E.reached = 1
               Uncanned.push(E)
               
       loop7:  Unscanned.shift()
               // no more object add to list Unscanned
               // now it is empty, loop end
               
   line8:      Free = []
   
   line9~11:   Free = [B, D]
               A.reached = C.reached = E.reached = … = I.reached = 0

知识点
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值