Название: Вылет по памяти при использовании динамической библиотеки (MSVC2015+Qt5.7.0). Отправлено: OS2 от Июль 26, 2016, 18:57 Всем доброго времени суток.
Не могу разобраться в ситуации: имеется динамическая библиотека с несколькими экспортированными функциями. Для подключения этой библиотеки использую QLibrary, затем через QLibrary::resolve получаю указатель на экспортируемую функцию. Сама экспортируемая функция ничего не делает, кроме как создает и возвращает указатель на класс QDialog. Диалог создается и отображается вполне корректно, НО: есть другая экспортируемая функция, которая принимает на вход указатель на QDialog и пытается через delete разрушить этот объект. Так вот, каждый раз когда это происходит, программа вылетает со следующей диагностикой: Цитировать HEAP CORRUPTION DETECTED: after Normal block (#3418) at 0x00D42708. Причем этаже ошибка появляется, если я вместо явного удаления объекта через delete, вызову для него метод deleteLater().CRT detected that the application wrote to memory after end of heap buffer. Никак не могу понять, в чем моя ошибка, что я делаю не так? ??? Подскажите, кто знает... ::) Заранее всем спасибо! Название: Re: Вылет по памяти при использовании динамической библиотеки (MSVC2015+Qt5.7.0). Отправлено: Bepec от Июль 26, 2016, 20:58 А где код?
Что собственно обсуждать? :) Название: Re: Вылет по памяти при использовании динамической библиотеки (MSVC2015+Qt5.7.0). Отправлено: Alex Custov от Июль 26, 2016, 21:01 классика. Нарушение работы с памятью. Двойное удаление указателя, например. Когда ты пытаешься удалить объект диалога, а он уже удалён, например. Когда у него установлен флаг DestroyOnClose, например.
Название: Re: Вылет по памяти при использовании динамической библиотеки (MSVC2015+Qt5.7.0). Отправлено: Igors от Июль 27, 2016, 10:19 НО: есть другая экспортируемая функция, которая принимает на вход указатель на QDialog и пытается через delete разрушить этот объект. Так кто же удаляет - Вы или экспортируемая функция? Нужен кодТак вот, каждый раз когда это происходит, программа вылетает со следующей диагностикой: Цитировать HEAP CORRUPTION DETECTED: after Normal block (#3418) at 0x00D42708. Причем этаже ошибка появляется, если я вместо явного удаления объекта через delete, вызову для него CRT detected that the application wrote to memory after end of heap buffer. Название: Re: Вылет по памяти при использовании динамической библиотеки (MSVC2015+Qt5.7.0). Отправлено: Racheengel от Июль 27, 2016, 11:50 Не удаляйте диалог, Qt сама его прихлоплет, когда "нада будет" :)
|