2Pascal-新时代的Pascal

 找回密码
 立即注册
搜索
热搜: fastreport
查看: 978|回复: 0
打印 上一主题 下一主题

请问新Delphi的ARC,与D7时代的引用计数有何异同?

[复制链接]

2

主题

6

帖子

34

积分

新手上路

Rank: 1

积分
34
跳转到指定楼层
楼主
发表于 2016-5-3 10:33:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
京东购书支持本站
看了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友大神们讲解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|新时代Pascal论坛

GMT+8, 2024-12-22 17:27 , Processed in 0.059752 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表