【发布时间】:2012-03-01 07:43:14
【问题描述】:
我一直在考虑使用共享指针,我知道如何自己实现一个--不想这样做,所以我正在尝试std::tr1::shared_ptr,我有几个问题...
引用计数是如何实现的?它使用双向链表吗? (顺便说一句,我已经用谷歌搜索了,但我找不到任何可靠的东西。)
使用std::tr1::shared_ptr有什么陷阱吗?
【问题讨论】:
-
“它使用双向链表吗?” ——为了什么?这对引用计数有何帮助?
-
链表有什么帮助?我还以为你说你知道如何自己实现一个。
shared_ptr如何引用计数是实现定义的,所以这个问题没有答案。您可以随时查看实现的源代码。 -
第一:有源代码。第二:有 C++0x/11 为什么是 TR1?第三:SO is-a 很棒的社区。 C++ has-a 很棒的社区。海湾合作委员会希望他们拥有它:)(半开玩笑)
-
STL 做了一个whole episode about that。我想说,这很重要,但这主要是因为原子引用更新和高级抽象。
-
@KonradRudolph 您可以使用链表实现引用计数指针。不是集中存储引用的数量,而是存储所有当前指针的链表。当该列表中没有任何内容时,您知道删除该对象。我相信它可能在多线程代码中具有某些优势,因为您可以编写可能无锁的版本。但是我从未见过它真正做到过,所以我猜它在实践中并没有更好。
标签: c++ shared-ptr tr1