微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

内联析构函数“导致” bad_alloc

如何解决内联析构函数“导致” 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 举报,一经查实,本站将立刻删除。