2Pascal-新时代的Pascal

标题: 请问新Delphi的ARC,与D7时代的引用计数有何异同? [打印本页]

作者: 1419925796    时间: 2016-5-3 10:33
标题: 请问新Delphi的ARC,与D7时代的引用计数有何异同?
看了Marco Cantu的书,还是没怎么看懂,
在此请问一下,新时代Delphi的ARC,和Delphi7时代的引用计数(string,动态数组等),有什么异同呢。
在Delphi7时代,string的内存管理是这样的:
(假定是在Win32平台)

[mw_shl_code=delphi,false]var
  S1, S2: string;//此时只是在全局区或栈区声明了2个4字节的变量,其实相当于2个指针,指针值为nil(当变量位于全局区)或随机值(当变量位于栈区)

begin
    S1 := FormatDatetime('yyyyMMddhhnnsszzz', Now);//此时,程序在堆内存分配空间,并将S1指向这块空间,堆空间的开头部分为引用计数等信息(具体忘了)
    S2 := S1;//此时,S2也指向了上述堆内存空间,而引用计数+1
    S1 := 'anychars' + S1;//此时重新分配堆内存,并将这段内容拷贝过去,S1指向它;而原分配的堆内存内容不变,引用计数-1,S2仍指向它。
    //过程结束或程序结束,程序自动释放分配的堆内存
end;[/mw_shl_code]

以上是我对D7时代引用计数概念的理解
新时代Delphi的ARC,与这个有什么异同?

求D友大神们讲解





欢迎光临 2Pascal-新时代的Pascal (http://2pascal.com/) Powered by Discuz! X3