将 Boehm 垃圾收集器与 C 标准库结合使用
开发多线程 C 应用程序时,Boehm 保守的垃圾收集器对于简化内存非常有用管理。这就提出了如何将 Boehm GC 与 C 标准库的类(如 std::map 和 std::vector)集成的问题。
一种方法涉及重新定义全局运算符 ::new 以使用 Boehm 的实现。然而,一种更直接的解决方案是在标准库集合模板中显式指定分配器模板参数。
例如,要 GC 分配整数向量,可以使用:
std::vector> my_vector;
std::vector 中的第二个模板参数用于控制分配矢量的内部数据结构,而不是单个元素。
对于 std::string,可以选择将 Basic_string 与 gc_allocator 一起使用:
std::basic_string, gc_allocator> my_string;
或者,可以直接提供字符数组GC_malloc_atomic.
总之,通过指定 gc_allocator 模板参数,可以将 Boehm GC 与 std::vector、std::string 和其他标准库类一起使用。不需要重新定义运算符::new。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3