【发布时间】:2017-06-02 14:47:15
【问题描述】:
我的目标是用 C++ 语言创建简单的标记清除垃圾收集器。标记阶段的第一步是获取所有根(线程堆栈、全局变量...)。那么,我怎样才能在我的 c++ 代码中获取或找到它的根源呢?
【问题讨论】:
-
您可能需要编写一个编译器来收集这些信息。
-
查看 Boehm 保守收集器的一种可能方法:en.wikipedia.org/wiki/Boehm_garbage_collector
-
您可以做的一个可能的事情是调用一个函数来注册每个根对象,并让您的收集器保留一个列表。不太方便,但易于实现(与编写新编译器相比),并且在某些情况下仍然有用。或者看看这个:stackoverflow.com/questions/147130/…
-
是的,我看到了 Boehm 收藏家。我会再试一次...是否有可能(我的意思是更容易实现)用于 C++ 的收集器,但用 C 编写?编辑:不确定我会写一个新的编译器。我正在为这部分工作寻找最简单的解决方案,如果有的话。
标签: c++ garbage-collection garbage