将 Boehm 的垃圾收集器与 C 标准库一起使用
在这种情况下,开发人员表达了他们希望在多用途中使用 Boehm 的垃圾收集器线程 C 应用程序。他们打算利用 C 标准库的算法和集合,例如 std::vector 和 std::map,但担心潜在的冲突。
重新定义运算符 new
提问者考虑用 Boehm 的实现重新定义operator new。但是,他们还考虑使用集合模板,并将显式分配器参数设置为 gc_allocator。
分配器参数的角色
std::vector 中的第二个模板参数定义用于管理向量内部数据的分配器。默认情况下,它使用系统的 malloc 分配内存,但可以自定义为使用 gc_allocator 等替代分配器。
处理 std::string
开发人员表达了担忧关于 GC 分配 std::string 实例。他们建议使用 basic_string 和 gc_allocator 创建自定义字符串。或者,他们询问有关 GC 分配内部字符数组的信息。
关于 GC 兼容性的建议
提问者寻求关于是否在由以下代码编译的应用程序中使用 Boehm GC 的建议g .
可能的解决方案
开发人员共享他们自己的解决方案代码,该代码使用 gc_allocator 和 new(GC) 来确保所有堆分配都是 GC 管理的。
附录
开发人员讨论了提议的 n2670 规范,该规范旨在提供 C 语言的垃圾收集支持。然而,他们指出,此功能目前尚未在 GCC 或 Clang 等主要编译器中实现。
以上是考虑到文章的问答性质,以下是一些标题选项: **的详细内容。更多信息请关注PHP中文网其他相关文章!