问题描述
我在程序中遇到了一个奇怪的错误,该错误通过使析构函数变为非内联来解决:
文件a.h
class A {
...
inline virtual ~A(){}
};
文件b.h
class B : public A {
...
virtual ~B(); // Defined in cpp file
};
客户代码file.cpp
#include "a.h"
#include "b.h"
...
auto x = std::make_unique<B>();
对make_unique的调用将引发bad_alloc异常。当我使〜A()非内联和〜B()覆盖时,它将停止抛出。有谁知道它为什么起作用?我发现的另一个解决方案是在A和B的析构函数中使用cout进行打印输出。我试图尽可能简化相对复杂的代码,所以我必须省略一些关键信息。我想知道是什么导致了这种奇怪的行为?用非内联析构函数覆盖内联析构函数是否有点模棱两可?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)