我有一个静态库,其中包含我的大部分代码/对象。我有另一个库继承了其中一些对象:EG
class SomeClass <-- from base library
class AnotherSomeClass : public SomeClass <--another library
在 SomeClass 我有另一个对象 SomeObject ,它也以相同的方式继承。
SomeObject *newobject = new AnotherSomeObject(); //for example SomeObject exists in one of the base classes in another library.
然后我向上转换以访问仅存在于子类中的函数,如下所示:
AnotherSomeObject *object = (AnotherSomeObject*)newobject;
一切都运行良好,除非我释放内存,这是在基类中完成的。我得到:_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))
这只是最近才出现,很难诊断,因为在我对某些类进行一些更改之前它运行良好。
我现在删除了子类对象(它继承了基类对象),然后将基类对象设置为 NULL,这似乎可以正常工作。
问题是为什么会发生这种情况?