Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связанный список. Программа зависает 
:(
    Опции темы
Selat
Дата 15.6.2012, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.6.2012

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



Я сейчас пытаюсь создать простенькую 2D игру(с мобами). Для удаления мобов используется метод Mob::killMob(...). По непонятным причинам, на следующем фрагменте кода программа зависает:
Код

void Mob::killMob(Mob* mob)
{
        //pHead - начало списка
        if(pHead == mob)
        {
                pHead = mob -> pNext; //Вот здесь и зависает(периодически)
                delete mob;
                return;
        }
        Mob* pCurrent = pHead;
        while(pCurrent -> pNext != mob)
        {
                pCurrent = pCurrent -> pNext;
        }
        pCurrent -> pNext = mob -> pNext;
        delete mob;
}

Помогите пожалуйста решить эту нелёгкую проблему...

Модератор: дубликат темы удалил

Это сообщение отредактировал(а) bsa - 18.6.2012, 11:45
PM MAIL   Вверх
feodorv
Дата 15.6.2012, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Сколько в программе потоков?
Что происходит в деструкторе?
Надеюсь mob не прибивает себя сам.

Это сообщение отредактировал(а) feodorv - 15.6.2012, 22:25


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Selat
Дата 15.6.2012, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.6.2012

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



Один. По крайней мере я не создавал - ещё не доучился. Пишу в Borland. Тип программы - application.
PM MAIL   Вверх
feodorv
Дата 15.6.2012, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(feodorv @  15.6.2012,  23:17 Найти цитируемый пост)
Что происходит в деструкторе?
Надеюсь mob не прибивает себя сам.




--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Selat
Дата 15.6.2012, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.6.2012

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



метод вызывается так:
Код

mob -> killMobe(mob);

А что плохого в том, что он прибивает сам себя? Когда игра была под консоль, подобных проблем вроде не возникало...

Это сообщение отредактировал(а) Selat - 15.6.2012, 22:33
PM MAIL   Вверх
feodorv
Дата 16.6.2012, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(Selat @  15.6.2012,  23:31 Найти цитируемый пост)
А что плохого в том, что он прибивает сам себя?

Я ж не знаю Вашего кода... Всяко может быть: delete this...

Просто ради корректности можно сделать так:
Код

void Mob::killMob()
{
        Mob* mob = this;
        //pHead - начало списка
        if(pHead == mob)
        {
                pHead = mob -> pNext; //Вот здесь и зависает(периодически)
                return;
        }
        Mob* pCurrent = pHead;
        while(pCurrent -> pNext != mob)
        {
                pCurrent = pCurrent -> pNext;
        }
        pCurrent -> pNext = mob -> pNext;
}

...
mob -> killMobe();
delete mob;



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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