gpt4 book ai didi

c++ - QMap 迭代崩溃

转载 作者:行者123 更新时间:2023-11-30 03:51:11 32 4
gpt4 key购买 nike

我在 Windows 8.1 上使用 Qt 5.5。当我运行下面的代码时,应用程序能够通过一次迭代,但在第二次迭代时崩溃。 100% 可重现。 (将其复制/粘贴到 Qt Creator 实例中并进行测试;它可能适合您)。

#include <QCoreApplication>
#include <QDebug>
#include <utility>

using std::pair;

int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QMap<QString, pair<QString, QString> > table_def = {
{"alpha", {"INTEGER", "PRIMARY KEY"}},
{"beta", {"VARCHAR", ""}},
{"gamma", {"VARCHAR", ""}},
{"delta", {"REAL", "DEFAULT 0"}},
{"epsilon", {"INTEGER", ""}},
{"zeta", {"INTEGER", ""}},
{"eta", {"INTEGER", ""}},
{"theta", {"INTEGER", ""}},
{"iota", {"VARCHAR", ""}},
{"kappa", {"INTEGER", "DEFAULT 0"}},
{"lambda", {"INTEGER", "DEFAULT 0"}}
};

QMapIterator<QString, pair<QString, QString> > it(table_def);
while (it.hasNext()) {
it.next();
const QString& col_name = it.key();
qDebug() << col_name;
const QString& col_type = it.value().first;
qDebug() << col_type;
const QString& extra_def = it.value().second;
qDebug() << extra_def;
}
return a.exec();
}

我的 Visual Studio 调试器说:helloqt.exe 中 0x000000006904E394 (Qt5Cored.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF。

如果有任何相关性,我在我的项目文件中添加了 DEFINES += Q_COMPILER_INITIALIZER_LISTS 以启用使用初始化程序列表初始化 QContainers。此外,如果我用 QPair 替换 STL pair,应用程序会在第一次迭代时崩溃。

我看不出这段代码有什么问题。会发生什么?

最佳答案

这是我使用的编译器版本 (VS 2013) 中的一个已知错误。更新 Visual Studio 后,此问题消失了。

关于c++ - QMap 迭代崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31420407/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com