我正在用Qt構建一個JSON對象並使用QJson將其轉換爲QString。這(通常)工作正常,它在這種情況下,但在我的Qt數據結構的析構函數,它崩潰與訪問衝突。該對象構建正常,它通過我的網絡連接發送,並在函數結束後,我的應用程序崩潰。QVariantMap在析構函數中崩潰
我的代碼如下所示:
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不改變在給定的數據的任何東西),但它不能被清理..
最好的問候, 托比亞斯
在VS中,此行爲是將錯誤的庫鏈接到項目的常見信號 - 例如,添加調試模式庫以釋放項目或反之亦然。 – Raiv
我不太確定,因爲我只使用VS編輯,項目使用JAM進行編譯。由於其他依賴關係,我無法編譯發行版,而我只鏈接Qt調試庫。我有機會檢查合適的圖書館是否與該項目相關聯? – Tobias