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