Название: Ошибка при работе с QDomElement Отправлено: Mike от Июль 13, 2006, 10:03 У меня есть класс. В одной из его процедур я делаю так:
Код: QDomElement Rt = Doc.documentElement(); Затем, когда этот объект разрушается, вываливается ошибка. Если же строчку mTitle = elt.text(); заменить на что-то типа mTitle = "123";, все работает нормально. В чем косяк? Название: Ошибка при работе с QDomElement Отправлено: Dair от Июль 13, 2006, 12:54 mTitle какого типа?.. QString?
Название: Ошибка при работе с QDomElement Отправлено: Mike от Июль 13, 2006, 13:43 QString.
Я думал, что это из кода и так понятно. :-) Название: Ошибка при работе с QDomElement Отправлено: Dair от Июль 13, 2006, 13:51 А ошибка в освобождении незанятой памяти?
А версия Qt какая? Название: Ошибка при работе с QDomElement Отправлено: Mike от Июль 13, 2006, 14:29 Qt 4.0.0
Ошибка: Unhandled exception at 0x77f767cd in MapViewer.exe: User breakpoint. Стек: ntdll.dll!77f767cd() ntdll.dll!77fa2612() ntdll.dll!77f881c0() ntdll.dll!77f6a6a0() kernel32.dll!77e75b6c() kernel32.dll!77e6c75a() > msvcr71d.dll!_CrtIsValidHeapPointer(const void * pUserData=0x00aa66a8) Line 1807 C msvcr71d.dll!_free_dbg_lk(void * pUserData=0x00aa66a8, int nBlockUse=1) Line 1132 + 0x9 C msvcr71d.dll!_free_dbg(void * pUserData=0x00aa66a8, int nBlockUse=1) Line 1070 + 0xd C msvcr71d.dll!free(void * pUserData=0x00aa66a8) Line 1025 + 0xb C QtCored4.dll!qFree(void * ptr=0x00aa66a8) Line 1090 + 0xd C++ QtCored4.dll!QString::free(QString::Data * d=0x00aa66a8) Line 785 + 0x9 C++ QtCored4.dll!QString::~QString() Line 682 + 0x23 C++ MapViewer.exe!cMap::~cMap() Line 12 + 0x10 C++ MapViewer.exe!cMap::`scalar deleting destructor'() + 0xf C++ MapViewer.exe!cMapList::~cMapList() Line 14 + 0x21 C++ MapViewer.exe!cMapList::`scalar deleting destructor'() + 0xf C++ MapViewer.exe!cMainWindow::~cMainWindow() Line 43 + 0x1f C++ MapViewer.exe!main(int argc=1, char * * argv=0x003d5ef0) Line 17 + 0x15 C++ MapViewer.exe!WinMain(HINSTANCE__ * instance=0x00400000, HINSTANCE__ * prevInstance=0x00000000, char * __formal=0x00141f16, int cmdShow=1) Line 105 + 0x12 C++ MapViewer.exe!WinMainCRTStartup() Line 390 + 0x39 C kernel32.dll!77e814c7() Название: Ошибка при работе с QDomElement Отправлено: Mike от Июль 14, 2006, 10:38 Решение проблемы:
Код: QDomElement Rt = Doc.documentElement(); Весь косяк в том, что оператор = (так же как и конструктор копирования, как написано в документации) просто ссылается на присваемую строку и только после ее изменения делает копию. А я в своей программе строку не менял, вот и была ошибка. Правда код смотрится очень криво. :-) |