首页  编辑  

引用计数

Tags: /超级猛料/Language.Object Pascal/指针、内存相关/   Date Created:

什么是引用计数(referenc-counted)?pchar与string的区别之一是:string是referenc-counted,而pchar不是,但是我不明白什么是referenc-counted

详细说起来太累,就简单说一下,我刚刚起床,牙齿还没有刷。。。。

字符串类型有引用计数的功能,这表示几个字符串都能指向相同的

物理地址。因此,复制字符串因为仅仅是复制了指针而不是复制实际的字符串而变得非常快。

string的内存基本上是wwwhym所说,(分配的大小||引用记数|长度|字符串)

当两个或更多的A n s i S t r i n g 类型共享一个指向相同物理地址的引用时,D e l p h i 内存管理使用了

c o p y - o n - w r i t e 技术,一个字符串要等到修改结束,才释放一个引用并分配一个物理字符串。下面的例

子显示了这些概念:

var

S1,S2 : string ;

begin

//给S1赋值,S1的引用计数为1

S1:='And now for something...';

S2:=S1; //现在S2 与S1 指向同一个字符串,S1 的引用计数为2

//S2 现在改变了,所以它被复制到自己的物理空间,并且S1 的引用计数减1

S2:=S2+'completely diff e r e n t 1 ' ;

end ;

分配的大小引用计数长度