2012-05-07 66 views
3

我不确定是否严格说,但我想把共享ptr作为垃圾收集策略。关于共享ptr

我在这里两个问题:

  1. 当共享适当PTR垃圾收集;当其他策略如标记扫描?
  2. 在C中是否有任何lib实现共享ptr?

谢谢。

+0

你是什么意思把共享ptr作为垃圾收集策略?你的意思是比较共享指针(称为GC世界中的引用计数)和标记扫描?我认为boost实现共享指针:http://www.boost.org/doc/libs/1_49_0/libs/smart_ptr/shared_ptr.htm。 阅读更多关于这里:http://stackoverflow.com/questions/417481/pointers-smart-pointers-or-shared-pointers – smichak

+0

@smichak是的,我想看看不同的垃圾收集技术之间的一些比较Q1。 –

回答

3

如果您想在C中进行垃圾回收,请查看Hans Boehm垃圾回收库。

共享ptr删除了处理对象删除的大部分必要性,但有很多复杂性:只有一个共享指针可以一次保存指针。您可能还想看看Boost's smart_ptr pointer handling和相关课程。

但是shared_ptr和Boost是C++。你将很难在C中实现这一点:shared_ptr依靠运算符重载来实现它的魔力。如果没有操作符重载,你无法知道某个地方是否有人持有指针副本。 (这在C++中也是一个问题,但是如果在整个代码中使用shared_ptr,操作符重载会降低风险。)

我肯定会推荐Hans Boehm。

+0

这个库很酷,我会检查它。我想在获得lib之前得到一些想法。谢谢。 –