![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Royan |
|
||||||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Опять фигня какая-то:
Имеется
Поясню, если воcпользоавться стандартными операторами new/delete[] то возникает сообщение о том что "поврежден блок перед №блока" конкретнее валится вот этот фрагмент из файла dbgheap.c:
Если пользовать комбинацию функций LocalAlloc/.../.../LocalFree то в момент вызова в деструкторе LocalFree вылетает исключение по какому-то безумному адресу и даже блок catch(...) не может его поймать и что делать и как быть ? Это сообщение отредактировал(а) Royan - 7.7.2004, 12:42 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
||||||
|
|||||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Да беда как раз там и вообще везде. Перед удалением надо проверять hFormattedStr на нулл. А разве LokalFree должна вызывать исключение. Вроде просто возвращает труе или фалсе. И нафига ты везде this-> пишешь?
|
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
hFormattedStr не NULL, это 100%, на самом деле удаление с помощью delete[] у меня происходит с проверкой, поэтому это не есть причина. И отладчик совершенно четко показывает значение внутри Такое сообщение выползает (насколько я понимаю) когда что-то остается не удаленным из выделенного динамически, а деструктор уже вызван.
this-> пишу чтобы было одназначно, а на самом деле дело привычке, мне так удобнее. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Кетч его по-любому не поймает, потому-что там системные исключения. Посмотри __try __except http://msdn.microsoft.com/library/default....dler_syntax.asp Но проблема у тебя в чём-то другом. new и delete дожны работать |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Попробуй так:
delete[] this->szFormattedStr; Добавлено @ 15:49 А ты вдругом месте нигде szFormattedStr или указатель на неё не удаляешь? |
|||
|
||||
| Royan |
|
||||||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Пробовал, все равно тоже самое.
Нет инициализация нулем происходит в конструкторе, присвоение адреса с выделенной памятью только внутри foo(), удаление внутри деструктора .... Я вот тут подумал а может это происходит в таком случае:
Жаль сейчас не могу проверить версию, только когда до дома доползу... для достоверности надо работать на VS.NET 2003 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |