![]() |
|
![]() ![]() ![]() |
|
Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 Приложении все замечательно работает. В чем проблема? -------------------- Иногда переменная - это просто переменная |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Скорее всего в том, что используются разные экземпляры ран-тайм и, соответственно, разный хип. Т.е. память, выделенная в одной куче, пытается освободиться в другой. Или нужно использовать один и тот же ран-тайм (DLL), или, если невозможно, избегать таких ситуаций (перекрестного выделения-освобождения памяти).
-------------------- ... |
|||
|
||||
Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: нет Всего: 5 |
Earnest
У меня все создается в основном приложении, рантайм одинаковый. Из длл у меня импоряттся классы, ничего не создается -------------------- Иногда переменная - это просто переменная |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Значит, не все. Строки какие-нибудь. Рендер что-то такое использует. Хотя это может быть и какая-нибудь тривиальная ошибка работы с памятью - запись за границы, например. Дебажь, в конце концов. Сам же говоришь - при вызове delete. Вот и сходи в него, посмотри, чего там. Еще есть полезная функция _CrtCheckMemory(). Наставь ее по коду, чтобы определить, где хип рушится (тот, который в твоем приложении). -------------------- ... |
|||
|
||||
Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: нет Всего: 5 |
Дебажь, в конце концов. Сам же говоришь - при вызове delete. Вот и сходи в него, посмотри, чего там.
Вылетает как раз на строчке delete, в деструктор не доходит. Мфц использует свои перегруженные операторы выделения и освобождения памяти, может там чтото, хотя врятли. Если бы я реально выходил за пределы кучи, или пытался удалить чужое, то мне бы и в Win32 приложении давало бы это ошибку Это сообщение отредактировал(а) Graf_h - 24.11.2010, 17:55 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Кто тебе мешает зайти внутрь delete?
MFC дополнительно помечает элементы кучи, поэтому может делать предварительную диагностику. А чистый АПИ вылетает только по реальному исключению. Которое вовсе не всегда при залезании в чужую память возникает. Тут уж как повезет. Но ошибка остается, и вылезти может когда угодно. Так что твое заключение неверно. МФЦ тебя дополнительно защищает. Если хип корруптед, значит, его кто-то того... Ищи. CrtCheckMemory тебе в помощь. -------------------- ... |
|||
|
||||
Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: нет Всего: 5 |
Earnest, спасибо, буду искать
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |