Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MFC delete Exeption 
:(
    Опции темы
Graf_h
Дата 19.11.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



здравствуйте. Есть рендер- win32 dll static run time. Питаюсь подключить этот рендер в MFC приложение, все перкрасно работает, но при вызове оператора delete програма падает. Вот текст ошибки:
Windows has triggered a breakpoint in ParticlesEditor.exe.

This may be due to a corruption of the heap, which indicates a bug in ParticlesEditor.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while ParticlesEditor.exe has focus.

The output window may have more diagnostic information.


В обычном Win32 Приложении все замечательно работает. В чем проблема?


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
Earnest
Дата 22.11.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Скорее всего в том, что используются разные экземпляры ран-тайм и, соответственно, разный хип. Т.е. память, выделенная в одной куче, пытается освободиться в другой. Или нужно  использовать один и тот же ран-тайм (DLL), или, если невозможно, избегать таких ситуаций (перекрестного выделения-освобождения памяти).


--------------------
...
PM   Вверх
Graf_h
Дата 24.11.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Earnest 
У меня все создается в основном приложении, рантайм одинаковый. Из длл у меня импоряттся классы, ничего не создается


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
Earnest
Дата 24.11.2010, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Graf_h @  19.11.2010,  19:12 Найти цитируемый пост)
Есть рендер- win32 dll static run time

Значит, не все. Строки какие-нибудь. Рендер что-то такое использует. 
Хотя это может быть и какая-нибудь тривиальная ошибка работы с памятью - запись за границы, например.
Дебажь, в конце концов. Сам же говоришь - при вызове delete. Вот и сходи в него, посмотри, чего там.
Еще есть полезная функция _CrtCheckMemory(). Наставь ее по коду, чтобы определить, где хип рушится (тот, который в твоем приложении).



--------------------
...
PM   Вверх
Graf_h
Дата 24.11.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Дебажь, в конце концов. Сам же говоришь - при вызове delete. Вот и сходи в него, посмотри, чего там.
Вылетает как раз на строчке delete, в деструктор не доходит. Мфц использует свои перегруженные операторы выделения и освобождения памяти, может там чтото, хотя врятли. Если бы я реально выходил за пределы кучи, или пытался удалить чужое, то мне бы и в Win32 приложении давало бы это ошибку

Это сообщение отредактировал(а) Graf_h - 24.11.2010, 17:55


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
Earnest
Дата 26.11.2010, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Кто тебе мешает зайти внутрь delete?
MFC дополнительно помечает элементы кучи, поэтому может делать предварительную диагностику.
А чистый АПИ вылетает только по реальному исключению. Которое вовсе не всегда при залезании в чужую память возникает. Тут уж как повезет. Но ошибка остается, и вылезти может когда угодно. Так что твое заключение неверно. МФЦ тебя дополнительно защищает. Если хип корруптед, значит, его кто-то того... Ищи. CrtCheckMemory тебе в помощь.


--------------------
...
PM   Вверх
Graf_h
Дата 26.11.2010, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Earnest,  спасибо, буду искать


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.