是否可以仅为程序的一部分使用Boehm垃圾收集器?

bia*_*lix 5 c c++ garbage-collection boehm-gc

在LinuxJournal上读过有关Boehm-Demers-Weiser垃圾收集器库的文章.我很有兴趣在我的库中使用它而不是我自己的引用计数实现.

我只有一个问题:是否可以仅将gc用于我的共享库,并且仍然在主应用程序中使用malloc/free?我不太明白gc如何检查堆,所以我担心在这种情况下gc的性能和可能的副作用.

Pie*_*ter 3

手册中的示例指出:

通常最好不要将垃圾收集分配与系统混合在一起mallocfree如果这样做,则需要小心,不要将指向垃圾收集堆的指针存储在系统分配的内存中malloc

更具体地说,对于 C++:

对于 C++,您需要特别小心,不要将指向垃圾收集堆的指针存储在收集器未跟踪的区域中。该收集器包括一些备用接口,以使其更容易。

查看手册中的源代码,您会发现垃圾收集的内存是通过特定的调用来处理的,因此,管理是单独处理的(由收集器或手动处理)。因此,只要您的库正确处理其内部并且不暴露收集的内存,就应该没问题。你不知道其他库如何管理它们的内存,你也可以使用它们,不是吗?:)