Russian Qt Forum
Ноябрь 25, 2024, 05:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Invalid address specified to RtlValidateHeap и QMap<QString,QString>  (Прочитано 2293 раз)
MaxoBik
Гость
« : Январь 07, 2016, 02:35 »

Доброго времени суток, что тут не так:
 
Код:
	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 минимум.
« Последнее редактирование: Январь 07, 2016, 02:53 от MaxoBik » Записан
MaxoBik
Гость
« Ответ #1 : Январь 07, 2016, 20:41 »

Проблема решена - в настройках проекта указывалась QtXml.dll вместо QtXmld.dll.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.127 секунд. Запросов: 20.