我知道什么是普通的全局变量和局部变量,但是什么是“局部引用计数”变量和“局部非引用计数”变量?
这是什么?有什么不同?它们是如何工作的?
有人可以展示代码示例并解释一下吗?
引用计数对象维护一个内部计数器,记录运行时有多少变量引用它。具有引用计数的 Delphi 本机类型包括字符串类型
AnsiString
和 UnicodeString
,以及 interface
和动态数组。
此类类型由 Delphi 编译器管理。多个变量可以引用内存中的同一个对象。当引用计数类型的变量引用现有对象时,该对象的计数器会增加 1。当该变量不再引用该对象时,因为它被重新分配或超出范围,该对象的计数器会减少 1。
1:除非变量是
const
,否则就不是。
当对象的计数器降至零时,意味着不再有变量引用它,编译器会从内存中释放该对象。