为了账号安全,请及时绑定邮箱和手机立即绑定

C ++标准库和Boehm垃圾收集器

C ++标准库和Boehm垃圾收集器

Smart猫小萌 2019-12-06 15:06:52
我想在Linux / AMD64 / Debian和GCC 4.6上开发一个多线程C ++应用程序(最终大多数C ++代码将由应用程序本身生成,可以将其视为高级领域特定语言)。可能是最新的C ++ 11标准)。我真的想对我的所有堆分配使用Boehm的保守垃圾收集器,因为我想分配new(GC)而不用担心delete。我假设Boehm的GC运行良好。使用(而不是C)C ++的主要动机是所有的算法和集合std::map... std::vector由C ++标准库提供。Boehm的GC提供了一个gc_allocator<T>模板(在其文件gc / gc_allocator.h中)。我应该重新定义operator ::new为Boehm的成员吗?还是应该将所有收集模板与显式分配器模板参数设置为some一起使用gc_allocator?我不完全了解std :: vector的第二个模板参数(分配器)的作用?它是用于分配矢量内部数据,还是用于分配每个单独的元素?那std::string-s呢?如何使他们的数据GC分配?我应该使用带basic_string模板的字符串gc_allocator吗?有什么方法可以让char的内部数组分配为GC_malloc_atomicnot GC_malloc?还是建议不要将Boehm GC与g ++编译的应用程序一起使用?问候。
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

这完全取决于您对C ++的熟悉程度和熟练程度。您是否可以在不使用的情况下编写一个不错的C ++程序delete,您是否意识到new仅应在非常特殊的情况下使用它,并且在大多数情况下不需要指针?如果您了解所有这些并得出结论,您需要一个垃圾收集器,那么请务必继续。另一方面,如果您不这样做,您可能会发现惯用的现代C ++非常擅长于用户友好的确定性内存管理。

查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 709 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信