【发布时间】:2011-06-01 07:17:00
【问题描述】:
我正在 C++0x 中实现一个压缩垃圾收集器供我个人使用,我有一个问题。显然,收集器的机制取决于移动对象,我一直想知道如何根据指向它的智能指针类型来实现这一点。我一直在考虑指针类型本身中的指针指向指针,或者收集器维护一个指向每个对象的指针列表,以便可以修改它们,从而在访问时不需要双重取消引用指针,但在收集过程中增加了一些额外的开销和额外的内存开销。去这里的最佳方式是什么?
编辑:我主要关心的是快速分配和访问。我不关心特别有效的收集或其他维护,因为这并不是 GC 的真正用途。
【问题讨论】:
-
享受头痛的乐趣,尤其是确保一切都通过所需的间接层 - 同时,我将(尽可能)用已经有垃圾的语言编写我的代码集电极。 +1 出于同情(不,这确实是一个有趣的问题)。
-
@delnan:他们必须像我一样解决这个问题,这只是在幕后。
-
“最佳”?我们需要您的要求。运行时和空间开销是否可接受? (我们应该为您猜测吗?)希望您在此阶段不要尝试对性能进行微优化。
-
为什么不直接使用 Hans Boehm 现有的 C++ GC? hpl.hp.com/personal/Hans_Boehm/gc
-
@dajames:因为它是对
new的补充,而不是替换它。
标签: c++ garbage-collection c++11