在过去几年中,我普遍接受了这一点
如果我要使用引用计数的智能指针
入侵智能指针是要走的路
–
但是,由于以下原因,我开始喜欢非侵入式智能指针:
>我只使用智能指针(所以没有Foo *躺在,只有Ptr)
>我开始为每个类创建自定义分配器. (所以Foo会超载运算符新).
>现在,如果Foo有一个所有Ptr的列表(因为它可以非侵入式智能指针).
>然后,我可以避免内存碎片问题,因为类Foo移动对象(只是更新相应的Ptr).
非侵入性智能指针中的这个Foo移动对象比入侵智能指针更容易的唯一原因是:
在非侵入式智能指针中,只有一个指针指向每个Foo.
在入侵智能指针中,我不知道有多少对象指向每个Foo.
现在,非侵入式智能指针的唯一代价是双重间接. [也许这会拧紧缓存].
有没有人有一个很好的学习昂贵这个额外的间接层是?
编辑:通过智能指针,我可能指的是别人称之为“共享指针”;整个想法是:有一个引用计数附加到对象,当它命中0时,对象被自动删除