【问题标题】:About shared ptr关于共享 ptr
【发布时间】:2012-05-07 07:44:02
【问题描述】:

我不确定这是否严格,但我想将共享 ptr 视为一种垃圾收集策略。

我有两个问题:

  1. 什么时候共享ptr适合垃圾回收;以及何时使用其他策略(如扫码)?
  2. 是否有任何 lib 在 C 中实现了共享 ptr?

谢谢。

【问题讨论】:

标签: c garbage-collection shared-ptr


【解决方案1】:

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

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

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

我肯定会推荐 Hans Boehm。

【讨论】:

  • 那个库很酷,我去看看。我想在获得库之前获得一些想法。谢谢。
【解决方案2】:

有几篇很好的文章谈到了这一点:

Garbage Collection Synopsis, and C++

以前关于 StackOverflow 的类似问题:Garbage collection vs. shared pointers

我还建议您查看 scoped_ptr。以下是不同之处: shared_ptr vs scoped_ptr

【讨论】:

  • OP 询问的是 C,而不是 C++。我不确定您发布的内容是否适用于 C。
  • @Aayush 这些文章中的一些解释很好而且有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 2013-11-27
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多