如何解决为什么抽象类和 std::function 用法的这种奇怪组合仅在 droidx64 船舶构建上崩溃?
虽然崩溃重现在使用 droidx64 飞船的一个构建设置中始终如一,但在另一艘 droidx64 飞船中却没有,因此您可能无法重现崩溃。试图看看有什么不同。
崩溃的使用ndk-21.0.17 强制 -O0 优化可以防止崩溃,-O1 之后会导致崩溃。 它不会在任何其他平台上崩溃。
我正在尝试找出构建系统中的差异。
#include <functional>
#include <memory>
struct ITest1
{
virtual ~ITest1() = default;
virtual void TestMethod1() noexcept = 0;
};
struct ITest2
{
virtual ~ITest2() = default;
virtual void TestMethod2() noexcept = 0;
};
using TestCallback = std::function<void()>;
class TestClass final : public ITest1,public ITest2
{
public:
void TestMethod1() noexcept override
{
}
void TestMethod2() noexcept override
{
}
private:
TestCallback m_callback;
};
int main()
{
std::make_shared<TestClass>(); // Crashes here
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。