将保守垃圾收集与 C 标准库集成
问题:
在多个- 线程C应用程序,Boehm的保守垃圾收集器(GC)能否与C标准库结合有效利用?具体来说,operator::new 以及 std::vector 和 std::string 提供的分配器应该如何处理?
答案:
1。重新定义操作符 ::new:
使用 Boehm GC 重新定义 ::operator new 是没有必要的。通过正确利用 Boehm 的 GC,可以避免显式地重新定义 ::operator new。
2。标准库容器的分配器:
std::vector:
std::string:
示例:
以下代码演示了 GC 分配向量的自定义实现:
<code class="cpp">#include <gc/gc_cpp.h> #include <gc/gc_allocator.h> #include <vector> class Myvec { std::vector<int, gc_allocator<int>> _vec; public: Myvec(size_t sz = 0) : _vec(sz) {} // ... (rest of class implementation) };</code>
3.与 g 的兼容性:
是的,可以将 Boehm GC 与 g 编译的应用程序一起使用。遵循上述指南,有效地将 GC 与标准库集成。
附录(2017 年 1 月):
以上是Boehm 的保守垃圾收集器可以与多线程应用程序的 C 标准库集成吗?的详细内容。更多信息请关注PHP中文网其他相关文章!