垃圾收集器c ++

时间:2013-04-09 22:04:02

标签: c++ garbage-collection

我一直在尝试用c ++创建一个垃圾收集器,我把它设计为我的所有基类,名为garbageCandidate,它包含一个静态向量,包含指向garbageCandidate的指针,每个garbageCollector实例都推送“this”在矢量上。

然后静态函数出现并删除静态向量中的所有指针。

在删除功能的最开始时(在第一个指针上删除),我收到一条错误,指出删除被用于无效指针......

这是否与静态/动态绑定有关?我的意思是:删除操作符无法按预期运行,因为我在“父”类上调用了delete并且它实际上是一个孩子?

一种避免这种情况的方法是创建虚拟析构函数吗? (或虚拟删除功能)?

还是我完全错过了什么?

ps:用于动态创建的测试的所有对象。

2 个答案:

答案 0 :(得分:0)

您是否有理由推出自己的自定义垃圾收集器?如果所有对象都是动态创建的,那么为什么不使用boost的智能指针(如boost::shared_ptr)本质上使用RAII来为您提供经过良好测试的垃圾收集解决方案?

我问,因为通常在项目的软件开发生命周期过程中,你最终修复了你自己编写的代码中的错误(至少大部分时间)。那么你有没有理由重新发明轮子呢?

答案 1 :(得分:0)

我认为您应该使用Boehm Conservative GC或智能指针,而不是滚动自己的GC。两者都不完美:

尽管如此,与推出自己的解决方案相比,Boehm GC或Smart指针的实施和维护工作量都会减少。