我不确定是否严格要求,但我想将共享ptr视为垃圾收集策略。
我在这里有两个问题:
感谢。
答案 0 :(得分:3)
如果您想在C中进行垃圾收集,请查看Hans Boehm垃圾收集库。
共享ptr消除了处理对象删除的大部分必要性,但是有许多复杂情况:一次只有一个共享指针可以保存指针。您可能还想查看Boost's smart_ptr pointer handling及相关课程。
但是shared_ptr和Boost是C ++。你将很难在C中实现这一点:shared_ptr依赖于运算符重载来实现它的魔力。如果没有运算符重载,您无法知道某个人是否持有指针的副本。 (这在C ++中也是一个问题,但如果在整个代码中使用shared_ptr,则运算符重载会降低风险。)
我肯定会推荐Hans Boehm。
答案 1 :(得分:2)
有一些好文章谈到这个:
Garbage Collection Synopsis, and C++
StackOverflow上的类似问题:Garbage collection vs. shared pointers
我还建议你研究一下scoped_ptr。这是差异: shared_ptr vs scoped_ptr