Boost shared_ptr:使用unique()在写入时实现复制

时间:2011-04-15 11:39:28

标签: c++ boost smart-pointers

有人可以通过此解释促进shared_ptr manual的含义:

  

如果您使用unique()来实现   复制写,不要依赖   存储指针时的具体值   是零。

感谢。

2 个答案:

答案 0 :(得分:5)

Copy-on-write是一种存储方案,其中具有重复值的对象的副本由单个对象表示。只有当您尝试更改一个时,它才会复制到一个新的唯一对象。

Boost通过告诉您某个shared_ptr是否支持多个引用来支持此功能。如果是,则写入对象将需要复制。

手册说如果你在这样的方案中有NULL指针,它们可能会报告是唯一的还是不唯一的。真的,即使允许这样的操作,Boost也很慷慨。

答案 1 :(得分:3)

基本上,这意味着如果你的shared_ptr没有指向任何东西,它可能会或可能不会说它是唯一的。但是,您应该知道COW已经被几乎所有主要的字符串库抛弃而且不允许使用C ++ 0x,因为它基本上很糟糕,因此您需要小心这样做。