4

我很好奇是否有任何大型项目使用过 Boehm GC?我对是否有任何游戏项目使用过这个垃圾收集器特别感兴趣。如果不是,Boehm GC 对游戏项目不利吗?

像 Boehm GC 这样的简单代码可以处理的事实给我留下了深刻的印象:

#include <stdio.h>
#include <stdlib.h>
#include <gc.h>

int main(void)
{
    int i;

    GC_INIT();
    for (i = 0; i < 10000000; ++i)
    {
        int *p = GC_MALLOC(sizeof(int *));
        //int *q = malloc(sizeof(int *));

        printf("Heap size = %d\n", GC_get_heap_size());
    }

    return 0;
}

使用 Boehm GC 制作游戏有什么注意事项吗?

谢谢

4

1 回答 1

0

Open Modelica Compiler (OMC) 使用 Boehm GC。这是一个非常大的应用程序,拥有超过 300 000 行代码,用于工业和研究。垃圾收集器在模拟期间收集垃圾。

请参阅https://github.com/OpenModelica/OMCompiler/tree/master/SimulationRuntime/c/gc 它定义了垃圾收集器的内部 API,可能是一个很好的参考和有趣的阅读。

但是,如果您要使用 C++ 制作游戏,我建议您改用智能指针。如果您真的想要拥有垃圾收集器的舒适性,并且出于某种原因需要使用 C 或 C++,那么 Boehm 是一个不错的选择。否则,如果性能对您正在编程的游戏并不重要,那么查看其他具有高效垃圾收集器的语言(如 Java 或 C#)可能是明智之举。

于 2019-04-24T06:09:39.343 回答