Я создаю 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 ничего не меняет в данных), но ее нельзя очистить.
С уважением, Тобиас