关于共享ptr
回答
如果您想在C中进行垃圾回收,请查看Hans Boehm垃圾回收库。
共享ptr删除了处理对象删除的大部分必要性,但有很多复杂性:只有一个共享指针可以一次保存指针。您可能还想看看Boost's smart_ptr pointer handling和相关课程。
但是shared_ptr和Boost是C++。你将很难在C中实现这一点:shared_ptr依靠运算符重载来实现它的魔力。如果没有操作符重载,你无法知道某个地方是否有人持有指针副本。 (这在C++中也是一个问题,但是如果在整个代码中使用shared_ptr,操作符重载会降低风险。)
我肯定会推荐Hans Boehm。
这个库很酷,我会检查它。我想在获得lib之前得到一些想法。谢谢。 –
有迹象表明,说说这几个好文章:在计算器上
Garbage Collection Synopsis, and C++
上一个类似的问题:Garbage collection vs. shared pointers
我也建议你看看scoped_ptr的。这里的区别: shared_ptr vs scoped_ptr
OP询问C而不是C++。我不确定您发布的内容是否适用于C。 – jv42
@Aayush在这些文章中的一些解释是好的和有用的。 –
- 1. 共享ptr铸造
- 2. C++ 11共享Ptr,共享相同的引用计数器
- 3. 关于共享点LogToHistoryListActivity.Duration
- 4. 问题关于共享库
- 5. 关于在共享实例
- 6. 关于iOS共享的几个问题
- 7. 关于CUDA共享存储器
- 8. 关于nginx共享主机上的Symfony2
- 9. 关于oracle服务器共享问题?
- 10. 关于iPhone SDK中的文件共享?
- 11. 关于桌面共享概念
- 12. C++:用共享和弱ptr替换原始指针
- 13. 是否加入到共享PTR参考增加引用计数
- 14. 8086大会,关于PTR运营商
- 15. 共享首选项关闭
- 16. 共享DLL - 依赖关系
- 17. android共享用户ID用于共享特定的共享首选项值
- 18. 共享基于棱镜4
- 19. 检测用于共享某些内容的共享者
- 20. 加载共享依赖于其他共享库库
- 21. 共享时发生错误(iOS共享套件用于推特)
- 22. IPC ::共享的共享
- 23. 对于(* ptr)[],为什么printf(“%p”,(void *)ptr + 1)有效但不是printf(“%p”,ptr + 1)?
- 24. 如何通过共享框ptr访问时使我的结构字段可变?
- 25. 我们如何处理共享/弱ptr而不会使代码变得庞大?
- 26. 差异,* PTR和&PTR
- 27. 关于使用共享指针的评估顺序
- 28. 共享工具提示不关于第二Y轴显示值
- 29. 关于兵马俑和Servlets /共享线程
- 30. 与watchOS共享钥匙串2 - 所有关于项目设置?
你是什么意思把共享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
@smichak是的,我想看看不同的垃圾收集技术之间的一些比较Q1。 –