Воскресенье, 05 Февраля 2023, 20:12

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Динамическая память C++ (Вектор)
Динамическая память C++
ganstermДата: Среда, 30 Января 2013, 18:35 | Сообщение # 1
частый гость
Сейчас нет на сайте
Здравствуйте. У меня появилась проблема с очисткой памяти после удаления элемента из вектора, а точнее:
Есть класс в котором есть переменная lifetime
когда она равна 0, то флаг delete=true;
а вектор обновляю так
if(dyn.at(i)->kill==false)
{
dyn.at(i)->Update();
}else
{
dyn.erase(dyn.begin()+i);
};
};
значение вектора то удаляется, а сам класс продолжает где то занимать место. Вопрос как сделать очистку?
НохчиДата: Среда, 30 Января 2013, 18:37 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
delete dyn[i];
dyn.erase(dyn.begin()+i);


Многие вопросы по Windows отпадут, если посмотреть тут
ganstermДата: Среда, 30 Января 2013, 18:43 | Сообщение # 3
частый гость
Сейчас нет на сайте
Ввел переменню для проверки
в ней значение 0xfeeefeee - это значит память освобождена?
НохчиДата: Среда, 30 Января 2013, 18:50 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
вроде бы в отладочном режиме после освобождения памяти в указатель записывается это значение, но расчитывать на это не стоит, лучше в деструкторе сделай вывод какой-нибудь фразы.

Многие вопросы по Windows отпадут, если посмотреть тут
ganstermДата: Среда, 30 Января 2013, 18:55 | Сообщение # 5
частый гость
Сейчас нет на сайте
Да заработало biggrin
Только теперь сообщение вызывается в классе наследнике, а родитель продолжает где то болтаться.

У меня класс dyn-родитель в нем флаг delete, а в наследнике при определенном моменте от меняется на true. Как избавиться от него?
НохчиДата: Среда, 30 Января 2013, 19:01 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Во всех классах, от которых предпологается наследование, деструкторы делай виртуальными.

Многие вопросы по Windows отпадут, если посмотреть тут
ganstermДата: Среда, 30 Января 2013, 19:24 | Сообщение # 7
частый гость
Сейчас нет на сайте
Все спасибо, заработало
Форум игроделов » Программирование » C/C++ » Динамическая память C++ (Вектор)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2023 Рейтинг