gpt4 book ai didi

c++ - 垃圾收集器 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:34 26 4
gpt4 key购买 nike

我一直在尝试用 C++ 创建一个垃圾收集器,我将它设计为我所有垃圾收集器的基类,称为 garbageCandidate,它包含一个静态 vector ,其中包含指向 garbageCandidate 的指针,每个 garbageCollector 实例都推送“this”在载体上。

然后一个静态函数来了,删除静态 vector 中的所有指针。

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

这与静态/动态绑定(bind)有关吗?我的意思是:删除运算符是否无法按预期运行,因为我在“父”类上调用 delete 而它实际上是一个子类?

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

还是我完全错过了什么?

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

最佳答案

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

我问是因为通常在项目的软件开发生命周期过程中,您最终会修复自己编写的代码中的错误(至少大多数时候是这样)。那么,您重新发明轮子是有原因的吗?

关于c++ - 垃圾收集器 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com