我正在使用 Qt 构建一个 JSON 对象,并使用 QJson 将其转换为 QString。这(通常)可以正常工作,并且在这种情况下可以正常工作,但是在我的 Qt 数据结构的析构函数中,它会因访问冲突而崩溃。对象构建良好,它通过我的网络连接发送,函数结束后,我的应用程序崩溃。
我的代码如下所示:
void bar()
{
QVariantMap data;
data.insert("Id", 1);
QList<QVariant> list; //QVariantList
for (QMap<...>:ConstIterator ... ) //Loop through a Map
{
QMap<QString, QVariant> singleEntry; //QVariantMap
singleEntry.insert("LocalId", it.value());
QList<QVariant> entryList; //QVariantList
for (...) //Loop through another structure
{
entryList.append("foo");
}
singleEntry.insert("List", entryList);
list.append(singleEntry);
}
data.insert("Entries", list);
QJson::Serializer.serialize(data); // Works fine
} // Crash here
如果我删除建立起来的内部循环,entryList
一切正常。似乎析构函数data
无法删除内容,但我不知道,为什么。整个数据结构在序列化时似乎很好(我希望 QJson 不会更改给定数据中的任何内容)但无法清理它。
最好的问候,托拜厄斯