Я строю JSON-объект с помощью Qt и преобразовываю его в QString с помощью QJson. Это (обычно) работает нормально, и в этом случае это так, но в деструкторе моей структуры данных 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 ничего не меняет в данных), но ее невозможно очистить.
С наилучшими пожеланиями,
Tobias