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.