我想在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 ++编译的应用程序一起使用?
问候。
慕慕森