我一直在尝试在C++中创建垃圾收集器,我将其设计为所有类的基类,称为garbageCandidate,并在每个garbageCollector实例中使用一个静态向量来包含指向garbageCandidate的指针,并将“this”推送到向量中。
然后,一个静态函数会删除静态向量中的所有指针。
在删除函数的最开始(第一个指针上的删除操作)时,我收到一个错误,指出删除操作在无效的指针上被使用...
这是否与静态/动态绑定有关?我的意思是:由于我在“父”类上调用了delete,而它实际上是子类,所以delete运算符无法按预期工作吗?
是否可以通过创建虚析构函数(或虚删除函数)来避免这种情况?
还是我完全错过了什么?
附注:所有用于测试的对象都是动态创建的。
garbageCandidate
类中将 dtor 声明为虚函数了吗? - Jerry Coffin