QT и куча коррупции

Я понимаю, что коррупция в куче может происходить по разным причинам.

У меня есть проект QT C++ в Visual Studio. Если я запускаю в режиме отладки или выпуска из Visual Studio, все идет гладко.

Если я запускаю выпущенный исполняемый файл (за пределами Visual Studio), я получаю сообщение о том, что приложение перестало работать, после чего выдается запрос на отладку. Это откроет окно отладчика Visual Studio Just-in-Time, заявив, что: An unhandled win32 exception occured in my_qt_application.exe[8812]

Если я выберу Отладку, я получаю сообщение: Unhandled exception at (...) (ntdll.dll) (...) A heap has been corrupted.

Поэтому я продолжаю искать в коде причины. Проблема в том, что эта ошибка происходит в очень случайных случаях, не очень согласованно.

Мой вопрос может ли причина этого отсутствовать DLL? (Я добавил dll, позволяющий запустить программу.)

1 ответ

Решение

Нет. Причина не может отсутствовать DLL. Это может быть непосредственной причиной. Пример: если некоторые подключаемые модули изображений недоступны, а ваш код не проверяет это QImage загрузка прошла успешно, а затем пытается обработать нулевое изображение - могут возникнуть проблемы.

Скорее всего, однако, у вас есть старая ошибка памяти, которую вы должны сжать, например, с помощью Valgrind.

Другие вопросы по тегам