问题描述
在进行引用计数时,任务之一是“当变量超出范围时减少计数器”。但是我最大的问题是,在实现引用计数器的实现级别上,我无法确定变量何时超出范围。
能解释一下变量超出范围的所有(或主要)方法吗?
我是专门针对高级编程语言而不是玩具/入门性本科语言。我在想像JavaScript或Rust,它们具有闭包和嵌套函数定义(至少在JavaScript情况下)。另外,当您使用指针等并使用可变函数参数时。假设您将可变值传递给函数,然后使用该可变值返回闭包,诸如此类。
当变量超出范围时,您可以通过什么方式知道?如何组织得足够有条理,以便可以将其添加到参考计数器?
解决方法
当执行到达声明它的块的末尾时,局部变量超出范围。
全局/静态变量永远不会超出范围。
属于复合数据类型的字段(类/对象,结构/记录,数组等)的变量本身可能没有“作用域”,但如果有,则由范围确定。它们所属的复合数据类型实例。
如果试图在编译时对此进行分析,则使用符号表。有关编译器编写的教科书对此进行了介绍。