内联析构函数“导致” bad_alloc

问题描述

我在程序中遇到了一个奇怪的错误,该错误通过使析构函数变为非内联来解决:

文件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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...