繁体   English   中英

垃圾收集器c ++

[英]garbage collector c++

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

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

在删除函数的最开始(删除第一个指针)我得到一个错误,说明删除被用于无效指针...

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

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

还是我完全错过了什么?

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

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

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

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

尽管如此,与滚动您自己的解决方案相比,Boehm GC或智能指针中的任何一个都将减少实施和维护工作量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM