![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
Суть проблемы:
Есть класс(link), в нем указатель(*next) на объектэтогоже класса, в ходе программы этот указатель начинает указывать на объект, этогоже класса, память для которого выделяется методом new:(next=new link;). В деструкторе этого класса этот указатель чистится методом delete:(delete next); Я раньше пологал, что при вызове delete, память просто чистится, а у меня при этом запускается деструктор объекта, расположенного по адресу next. Код:
А вот, что выводится на экран: 0x0->next=0x2224b0 0x2224b0->next=0x2224d0 0x2224d0->next=0x2224f0 Для продолжения................ next: lost *p; next: p=begin; 0x2224b0->next=0x2224d0->next=0x2224f0 next:begin=begin->next; next: delete p; next: list *p; next: p=begin; И вылетает ошибка:Передайте микросовт об ошибке. И з всего этого я сделал вывод, что после делите п вызывается деструктор поновой и там уже естественно при попытке перейти NULL указателю, вылетает ошибка. НО ПОЧЕМУ ВЫЗЫВАЕТСЯ ДЕСТРУКТОР -------------------- Жизнь есть. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Потому что так определено стандартом. |
|||
|
||||
| ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
А я всегда пологал, что память просто чистится -------------------- Жизнь есть. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Как ты себе представляешь чистку памяти? Для того деструктор и существует, чтобы всё запрошенное конкретным обьектом пометить как свободное. а иначе чего чистить??
|
|||
|
||||
| ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
что-то никогда не задумывался, а вообще да, логично.спасибо
-------------------- Жизнь есть. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |