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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка: Debug Assertion Failed(нарушение дебаженой кучи)  (Прочитано 12408 раз)
timocov
Гость
« : Октябрь 06, 2013, 21:54 »

Доброго времени суток!
Столкнулся с такой проблемой:
Запускаю приложение, отрабатывает как нужно, но после закрытия выскакивает окно с ошибкой(в прикр. файле)

Уже несколько дней бьюсь, не могу понять почему. Примерно знаю после чего такая ерунда, но как исправить не знаю.
Помогите, кто может.
В прикрепленном файле проект, Qt4
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Октябрь 06, 2013, 22:44 »

наверное где-то удаляешь уже удаленный указатель, проверь свои free/delete
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
timocov
Гость
« Ответ #2 : Октябрь 06, 2013, 22:56 »

Так в том то и дело, что ничего не удаляю, практически.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Октябрь 06, 2013, 23:13 »

компилятор от visual studio 2012, никаких ошибок не вываливается при завершении. но при запуске под дебаггером вылазит 2 предупреждения (это наверное какие-то системные):
Цитировать
:0: warning: Exception at 0x7510c41f, code: 0x6ba: RPC server unavailable, flags=0x1 (execution cannot be continued) (first chance)
когда открывается окно выбора папки и
Цитировать
:0: warning: Exception at 0x7510c41f, code: 0x406d1388: Startup complete, flags=0x0 (first chance)
где-то в процессе прохода по папкам.

попробуй может очистить полностью проект и поудалять все build-папки.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
timocov
Гость
« Ответ #4 : Октябрь 06, 2013, 23:23 »

Очищал, удалял. Под убунтой тоже ложится.
У меня она отваливается когда сканирую весь диск C. Очень много файлов, видимо. Но только на нем ложится.

Даже не только целый диск. Например, папку c:\Windows
« Последнее редактирование: Октябрь 06, 2013, 23:31 от timocov » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Октябрь 06, 2013, 23:34 »

У меня она отваливается когда сканирую весь диск C. Очень много файлов, видимо. Но только на нем ложится.

Даже не только целый диск. Например, папку c:\Windows
с этого и надо было начать. так у меня тоже вываливается ошибка. вот стек на всякий случай:
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
timocov
Гость
« Ответ #6 : Октябрь 06, 2013, 23:49 »

Думал проблема в QReadWriteLock, заменил на QMutex. Не помогло(

Что можете посоветовать? Или тут проблема очевидна?

Update:
Думал, может ошибка в том, что InfoCollectThread наследуется от QObject.
Переписал все на обработку событий вместо сигналов/слотов - эффекта нет(
« Последнее редактирование: Октябрь 07, 2013, 03:00 от timocov » Записан
timocov
Гость
« Ответ #7 : Октябрь 07, 2013, 03:30 »

Метод тыка показал, что проблема в удалении объектов DirectoryTreeItem.
Только вот если не удалять, утечка будет((
Записан
Bepec
Гость
« Ответ #8 : Октябрь 07, 2013, 06:51 »

Может вы сначала удаляете родителя, а потом пытаетесь детей? Родитель сам беспокоится о детях.
Записан
timocov
Гость
« Ответ #9 : Октябрь 07, 2013, 10:57 »

Я вообще не удаляю - предоставляю это QTreeWidget
« Последнее редактирование: Октябрь 07, 2013, 11:07 от timocov » Записан
timocov
Гость
« Ответ #10 : Октябрь 07, 2013, 12:05 »

А что, если объекты DirectoryTreeItem создаются в других потоках, а удаляются в главном?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Октябрь 07, 2013, 19:29 »

GUI-компоненты не могут существовать в других потоках кроме основного (это есть в документации по Qt)
Записан

Юра.
timocov
Гость
« Ответ #12 : Октябрь 08, 2013, 00:34 »

В общем. Не знаю что точно помогло. Но сделал DirectoryTreeItem наследником от QObject(ну и удалять стал QObject::deleteLater()), и добавил отдельный класс для отображения на экране, и вроде работает.
Всем спасибо, кто помогал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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