我有一个很难在代码片段中隔离的具体案例,但我可以解释一下......
我有一个类 A:public B 和 A 有一个 foo * f 类型的成员指针。在 A 的虚拟析构函数中,我有类似的东西:
A::~A() { shutdown(); }
其中,shutdown 是非虚拟的,类似于:void A::shutdown() {delete f;}
事实证明,在运行时,这给了我一个“称为终止的纯虚拟方法,在没有活动异常中止(核心转储)的情况下调用”,但是如果我从析构函数的主体中删除 shutdown() 并直接调用它,然后让析构函数运行......我不再明白这个......
什么可能导致这种行为?我尝试过使用 gdb,但它很大,我什至不确定要寻找什么。任何想法将不胜感激!