C ++有垃圾收集类吗?

有没有一个类为C ++做垃圾回收? 我在想像这样:

class A : public GarbageCollected<A>
{
  void kill()
  {
     GarbageCollected<A>.set_cleanup_flag();
  }
  ...
private:
  GarbageCollectedPointer<B> b_pointer; // Somehow we follow 
  GarbageCollectedPointer<B> b_pointer2; // these pointers.
};

class B
{
  ...
};

class GarbageContainer
{
  ...
};

int main()
{
  GarbageContainer gc;
  gc.add(new A());
  ...
}

这个想法是GarbageContainer会对对象或其他垃圾收集方法进行标记和扫描。 这将节省必须做引用计数和使用weak_ptrs和垃圾收集可以只用于它觉得有必要的对象。

有没有实现类似这样的库的库?


C ++ 0x支持使用引用计数来跟踪内存分配的shared_ptr。 如果仔细使用,它可以作为一个好的垃圾收集器。

当没有剩余的对象引用一个内存块时(参考计数已经达到0),shared_ptr会释放内存。

  • 关于shared_ptr的这个教程应该让你开始。
  • 这里是关于shared_ptr内部的高级教程

  • 看看Boehm的垃圾收集器。 我不认为它有多个开箱即用的GC容器,但如果您绝对需要它,您可以自己添加此功能。


    在C / C ++中,libgc是垃圾收集库的一个很好的选择

    链接地址: http://www.djcxy.com/p/27159.html

    上一篇: Is there a garbage collecting class for C++

    下一篇: garbage collection for specific circumstances