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会释放内存。
看看Boehm的垃圾收集器。 我不认为它有多个开箱即用的GC容器,但如果您绝对需要它,您可以自己添加此功能。
在C / C ++中,libgc是垃圾收集库的一个很好的选择
链接地址: http://www.djcxy.com/p/27159.html