Доброго времени суток, что тут не так:
QFile file("some.xml");
if (file.open(QIODevice::ReadOnly))
{
QByteArray data = file.readAll();
QDomDocument domDoc;
QMap<QString,QString> nodeMap;
if (domDoc.setContent( data ))
{
QDomNode topNode = domDoc.documentElement().firstChild();
while ( !topNode.isNull()) {
nodeMap.insert(topNode.toElement().tagName(), topNode.toElement().text());
topNode = topNode.nextSibling();
}
}
qDebug() << nodeMap;
}
// <-- вот тут при удалении nodeMap имеет проблему с Heap-ом, но почему?
Call Stack:
ntdll.dll!RtlpNtEnumerateSubKey() + 0x3947 байт
[Указанные ниже фреймы могут быть неверны и (или) отсутствовать, символы для ntdll.dll не загружены]
ntdll.dll!RtlUlonglongByteSwap() + 0x1561a байт
ntdll.dll!RtlValidateHeap() + 0x7a байт
KernelBase.dll!HeapValidate() + 0x14 байт
> msvcr100d.dll!_CrtIsValidHeapPointer(const void * pUserData) Строка 2036 C++
msvcr100d.dll!_free_dbg_nolock(void * pUserData, int nBlockUse) Строка 1322 + 0x9 байт C++
msvcr100d.dll!_free_dbg(void * pUserData, int nBlockUse) Строка 1265 + 0xd байт C++
msvcr100d.dll!free(void * pUserData) Строка 49 + 0xb байт C++
Qt5Cored.dll!QByteArray::operator>=() + 0x7db14 байт
Qt5Cored.dll!QByteArray::operator>=() + 0x17b77 байт
Qt5Cored.dll!QByteArray::operator>=() + 0x14fea байт
MyApp.exe!QString::`scalar deleting destructor'() + 0x10 байт C++
MyApp.exe!QMapNode<QString,QString>::destroySubTree() Строка 261 C++
MyApp.exe!QMapData<QString,QString>::destroy() Строка 223 C++
MyApp.exe!QMap<QString,QString>::~QMap<QString,QString>() Строка 339 + 0x22 байт C++
MyApp.exe!main(int argc, char * * argv) Строка 51 + 0xf байт C++
MyApp.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, HINSTANCE__ * __formal, HINSTANCE__ * __formal) Строка 113 + 0xd байт C++
MyApp.exe!__tmainCRTStartup() Строка 547 + 0x2c байт C
MyApp.exe!WinMainCRTStartup() Строка 371 C
kernel32.dll!BaseThreadInitThunk() + 0x12 байт
ntdll.dll!RtlInitializeExceptionChain() + 0x63 байт
ntdll.dll!RtlInitializeExceptionChain() + 0x36 байт
ПС, фигня какая-то, начал создавать QMap<QString,QString>* nodeMap в куче, и проблема пропала.
XML небольшой, соответственно и данных в nodeMap минимум.