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 が指定されたデータで何も変更しないことを願っています)、クリーンアップできません..
よろしく、 トバイアス