Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nomadd
14 / 9 / 0
Регистрация: 12.07.2012
Сообщений: 82
#1

Удаление элементов из std::vector - C++

17.02.2013, 18:02. Просмотров 902. Ответов 3
Метки нет (Все метки)

У меня есть класс Zone.
Но объявлен как массив vector в другом классе.
C++
1
2
3
4
5
6
class World
{
public:
    std::vector<Zone*>Zones;
...
};
Дальше постепенно заполняю его значениями,
C++
1
World::Zones.push_back(new Zone(X,Z,texture));
Но проблема с удалением элементов - элементы удаляются, но память не освобождается.
Пробовал по разному удалять(это всё находится в одной из функций класса World):
C++
1
         World::Zones.clear();
C++
1
         World::Zones.~vector();
C++
1
2
    for(int i=0;i<World::Zones.size();i++)
        delete World::Zones[i];
C++
1
2
    for(int i=0;i<World::Zones.size();i++)
    free(World::Zones[i]);
Но всё равно память не освобождается.
Если после такого удаления опять создать элементы - знаимаемая память только увеличится.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 18:02     Удаление элементов из std::vector
Посмотрите здесь:

Удаление элемента из std::vector<> - C++
- Здравствуйте завсегдатаи! Подскажите пожалуйста, можно ли из STL-ского вектора std::vector&lt;int&gt; удалить не последний элемент (с...

Абстрактный класс, удаление наследника из std::vector<T> - C++
При удалении через итератор выбивает ошибку в ходе выполнения программы. Имеется абстрактный класс: class Fruit : public...

Удаление элемента из вектора ( std::vector<Bullet> ) - C++
Здравствуйте! У меня возникла проблема во время удаления элементов, значения которых не удовлетворяли условию. П.С: До того как...

Как в std::vector получить доступ к методам элементов? - C++
Здравствуйте. Нужно что-то вроде этого: #include &lt;iostream&gt; #include &lt;vector&gt; #include &quot;box.h&quot; using namespace std; int...

Удаление элементов из vector<string> - C++
Здравствуйте.Решаю одну задачу, столкнулся с такой проблемой. Имеется vector&lt;string&gt;, в котором записан набор слов.Требуется удалить...

Удаление первых n элементов из vector - C++
Почему, к примеру, если k=3 а pop=2, то студия выдаст ошибку(итератор вне допустимого диапазона) при запуске функции erase. По моей логике,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
17.02.2013, 18:06     Удаление элементов из std::vector #2
чтоб удалять после new нужно вызывать delete

можно храить в векторе умные указатели (shared_ptr), тогда при erase/clear они будут сами освобождать объект.
Nomadd
14 / 9 / 0
Регистрация: 12.07.2012
Сообщений: 82
17.02.2013, 18:18  [ТС]     Удаление элементов из std::vector #3
delete не освобождает память, только элементы удаляет.
А что за умные указатели? Ими можно память освободить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 18:24     Удаление элементов из std::vector
Еще ссылки по теме:

Vector, список. Удаление и вставка элементов - C++
Из входного потока сформировать вектор вещественных чисел. Удалить из вектора все элементы, у которых дробная часть &lt; 0.5. Перед каждым...

Удаление элементов из vector; bind или not1 - C++
Как правильно забиндить, - сделать аналог, как через лямбду. Или же тут больше подойдет использование not1 (или not2). Не могу сам...

std::vector - C++
Здравствуйте! Подскажите пожалуйста разумно-ли использовать std::vector если у меня в векторе может храниться довольно большое кол-во...

Std::vector - C++
Здравствуйте, помогите, пожалуйста, с более теоретическим вопросом. Когда мы не прописываем using namespace std; мы пишем перед...

std::vector<char**> - C++
Может конечно боян, но похожей темы я не нашел. И так в чем проблема... Пишу программу для работы со своей базой данных. Решил базу...

Контейнер std::vector - C++
Помогите определить почему не работает задача. Оибку выбивает на строку k.push_back(0); #include &lt;iostream&gt; #include &lt;math.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
17.02.2013, 18:24     Удаление элементов из std::vector #4
Цитата Сообщение от Nomadd Посмотреть сообщение
delete не освобождает память
Это в какой вселенной такое безобразие?
Если у тебя остается что-то после delete от объекта, то это значит, что где-то еще у тебя выделяется память и потом не удаляется.

Если ты имеешь в виду, что delete не удаляет из вектора - да не удаляет и не должен.

shared_ptr
http://en.cppreference.com/w/cpp/memory/shared_ptr
Yandex
Объявления
17.02.2013, 18:24     Удаление элементов из std::vector
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru