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