我很好奇是否有任何重大项目使用过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制作游戏有什么警告吗?
由于
答案 0 :(得分:0)
Open Modelica编译器(OMC)使用Boehm GC。 它是一个非常大型的应用程序,具有超过30万行代码,可用于工业和研究领域。垃圾收集器在模拟过程中收集垃圾。
请参见https://github.com/OpenModelica/OMCompiler/tree/master/SimulationRuntime/c/gc 它为垃圾收集器定义了内部API,可能是一个很好的参考和有趣的阅读。
但是,如果您打算用C ++制作游戏,我建议改用智能指针。如果您确实希望拥有垃圾收集器,并且出于某种原因需要使用C或C ++,则Boehm是一个不错的选择。否则,如果性能对于您正在编程的游戏而言不是至关重要的,那么明智的做法是使用高效的垃圾收集器(如Java或C#)来查看其他语言。