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