字符串的引用计数 ( 积分: 10 )

  • 主题发起人 主题发起人 ff_ff
  • 开始时间 开始时间
F

ff_ff

Unregistered / Unconfirmed
GUEST, unregistred user!
今看delph5开发人员指南中有关字符串的问题
字符串引用计数
v a r
S 1 , S 2 : s t r i n g ;
b e g i n
/ /给S 1赋值,S 1的引用计数为1
S1:='And now for something...';
S2:=S1
//现在S 2与S 1指向同一个字符串, S 1的引用计数为2
/ / S 2现在改变了,所以它被复制到自己的物理空间,并且S 1的引用计数减1[red]这名什么意思?[/red]
S2:=S2+'completely diff e r e n t 1 ' ;
e n d ;
,A n s i S t r i n g字符串类型有引用计数的功能,这表示几个字符串都能指向相同的
物理地址。因此,复制字符串因为仅仅是复制了指针而不是复制实际的字符串而变得非常快。
当两个或更多的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技术,一个字符串要等到修改结束,才释放一个引用并分配一个物理字符串。
这段理论不懂,哪位给我讲讲
 
今看delph5开发人员指南中有关字符串的问题
字符串引用计数
v a r
S 1 , S 2 : s t r i n g ;
b e g i n
/ /给S 1赋值,S 1的引用计数为1
S1:='And now for something...';
S2:=S1
//现在S 2与S 1指向同一个字符串, S 1的引用计数为2
/ / S 2现在改变了,所以它被复制到自己的物理空间,并且S 1的引用计数减1[red]这名什么意思?[/red]
S2:=S2+'completely diff e r e n t 1 ' ;
e n d ;
,A n s i S t r i n g字符串类型有引用计数的功能,这表示几个字符串都能指向相同的
物理地址。因此,复制字符串因为仅仅是复制了指针而不是复制实际的字符串而变得非常快。
当两个或更多的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技术,一个字符串要等到修改结束,才释放一个引用并分配一个物理字符串。
这段理论不懂,哪位给我讲讲
 
即, 第二次赋值是, 赋给s2 一个地址, 这个地址就是s1的地址。 应该叫地址引用。

第三次赋值是常规的赋值。 另行开辟空间。 就如给s1赋值一样了。
 
为什么说 S1的引用计数减1?
 
接受答案了.
 

Similar threads

回复
0
查看
848
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部