我想在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 ++非常擅长于用户友好的确定性内存管理。
- 3 回答
- 0 关注
- 708 浏览
添加回答
举报
0/150
提交
取消