创建 QQuickWidget 时的 std::bad_alloc 异常

博尼

我正在尝试将现有 Qt QWidget 应用程序的一部分转换为 QML。

为此,我QQuickWidget按照此处提到的代码使用

QQuickWidget *view = new QQuickWidget();
view->setSource(QUrl::fromLocalFile(":/qml/spinner.qml"));
view->show();

我在主小部件的构造函数中有上述代码。

该代码有时有效。但其他时候,它在这一行抛出异常:

QQuickWidget *view = new QQuickWidget();

异常说:

app.exe 中 0x00007FFC84314B59 处未处理的异常:Microsoft C++ 异常:std::bad_alloc 在内存位置 0x000000338BCFDEE0。

我不知道为什么会发生异常或为什么它有时会起作用。到目前为止,我还没有找到一种模式,它什么时候起作用,什么时候不起作用。

到目前为止我还尝试过什么:

  • QQuickWidget 构造函数的其他重载(没有任何区别)
  • 尝试使用QQuickView(现在在 QQuickView 构造函数中抛出异常)

据我了解,当系统在低 RAM 上运行时会发生此异常。但是我的系统中有很多可用的 RAM。

如果您有任何输入,请提供。

QT 版本为:5.15.2,平台为:Windows。

博尼

在处理以下警告后,问题已得到修复,此处提到

警告: argc 和 argv 引用的数据必须在 QApplication 对象的整个生命周期内保持有效。此外,argc 必须大于零且 argv 必须包含至少一个有效字符串。

我们没有通过argc引用传递QApplication构造函数,在处理之后,修复了这个问题。

QQuickWidget的具体关系我不清楚QApplication,但是Mac平台QQuickWidget崩溃的调用栈提示有关系,之后我们发现了argc不引用传递的问题

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_platform.dylib        0x00007fff6752de52 _platform_strlen + 18
1   org.qt-project.QtCore           0x00000001039e66b2 QCoreApplication::arguments() + 130
2   org.qt-project.QtQuick          0x0000000104c65a8e contextFactory() + 46
3   org.qt-project.QtQuick          0x0000000104c661fb QSGContext::createDefaultContext() + 11
4   org.qt-project.QtQuick          0x0000000104d7ba8d QQuickRenderControl::QQuickRenderControl(QObject*) + 93
5   org.qt-project.QtQuickWidgets   0x00000001037d1ed3 QQuickWidgetPrivate::init(QQmlEngine*) + 51
6   com.logi.bolt.app               0x0000000101759066 main + 4134
7   libdyld.dylib                   0x00007fff67337cc9 start + 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

附加 std 字符串时出现 bad_alloc 异常

C++ - memcpy 给出异常:std::bad_alloc

CPP - 未处理的异常 std::bad_alloc

级联两个向量时的std :: bad_alloc

创建两个或多个 std::vector 时没有 bad_alloc,这些 std::vector 一起超过了内存(MSVC)

为什么std :: exception在std :: bad_alloc之前捕获我的异常?

.. Microsoft C ++的未处理异常:内存位置处的std :: bad_alloc

为什么返回vector <string>会抛出std :: bad_alloc异常?

当我运行我的代码时,我不断收到此错误“在抛出 'std::bad_alloc' what(): std::bad_alloc 实例后调用终止”

当分配超出限制的对象时,Clang无法引发std :: bad_alloc

使用较小内存量时,C ++ std :: bad_alloc错误?

C++:使用向量和迭代器时得到错误:std::bad_alloc

函数不会引发bad_alloc异常

C ++向量std :: bad_alloc错误

如何修复“std::bad_alloc”

当类在构造函数中动态分配自身时,为什么会发生堆栈溢出而不是std :: bad_alloc?

std::bad_alloc 将文本文件中的单个字符存储到向量 C++ 时

得到错误“抛出'std :: bad_alloc'what():whatstd :: bad_alloc实例后终止调用”

在std :: filesystem :: path追加上的c ++ std :: bad_alloc

内存位置未处理的异常bad_alloc

出现错误:抛出'std :: bad :: alloc'what():what std :: bad_alloc实例后终止终止

程序中的 C++ 向量 std::bad_alloc 错误

std :: vector构造函数中的bad_alloc

'new'导致std :: bad_alloc在相对不大的分配上

错误更改/ usr /权限后的'std :: bad_alloc'

TfLearn Confusion Matrix训练在std :: bad_alloc终止

Qt5抛出std :: bad_alloc

将Botan用于PKCS#11的std :: bad_alloc

大数据集的dijkstra计算期间的std :: bad_alloc