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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 200
#1

Удаление указателей из вектора - C++

20.07.2012, 23:39. Просмотров 2016. Ответов 6
Метки нет (Все метки)

Что то голова совсем не варит под вечер, подскажите, вот есть у меня вектор хранящий указатели на объекты, ежли я вызову erase насколько понимаю произойдет утечка памяти, а если буду поочередно применять delete[i] то никакого эффекта ж не будет?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2012, 23:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление указателей из вектора (C++):

Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей - C++
Здравствуйте. Помогите, пожалуйста, разобраться с одним большим заданием. Задание пока в процессе написания, но уже наверное есть ошибки....

Вывод вектора указателей - C++
Всем доброго времени суток. Есть такая проблема, пытаюсь написать шаблонный класс для древовидной структуры: template <class T> ...

Сохранение в файл вектора указателей - C++
Здравствуйте. Помогите, пожалуйста, советами - как правильно сохранить на диск четыре вектора указателей на произвольные типы. Дело в...

Создать копию вектора указателей - C++
Есть вектор указателей на мой класс: vector <TreeSet*> tree_set_list; Каждый класс содержит еще вектора с другими классами... в общем...

Запись вектора строк в массив указателей на тип char - C++
Решаю задачу 4.34 из книги Липпмана С. Язык программирования С++. Вводный курс. 4-е изд. Задание: 1) Напишите программу, читающую...

Удаление указателей на C++ - C++
#include <iostream> using namespace std; class Induct { public: void Set(int a) { x=a;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rudeeeboy
14 / 14 / 1
Регистрация: 08.11.2010
Сообщений: 172
21.07.2012, 00:05 #2
а если обнулить?
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
21.07.2012, 00:45 #3
Цитата Сообщение от xam max Посмотреть сообщение
ежли я вызову erase насколько понимаю произойдет утечка памяти
Да.
Цитата Сообщение от xam max Посмотреть сообщение
а если буду поочередно применять delete[i] то никакого эффекта ж не будет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <vector>
#include <cstddef>
 
class some_class
{
    private:
        int n_;
    
    public:        
        some_class(int n)
            : n_(n)
        {
            std::cout << "some_class() #" << n_ << std::endl;
        }
        
        ~some_class()
        {
            std::cout << "~some_class() #" << n_ << std::endl;
        }
};
 
int main()
{
    std::vector<some_class*> v; 
    v.reserve(10);
    
    for(size_t i = 1; i <= 10; ++i)
        v.push_back(new some_class(i));
        
    // освобождаем выделенную под объекты память
    for(size_t i = 0; i < v.size(); ++i)
        delete v[i];    
}
Цитата Сообщение от rudeeeboy Посмотреть сообщение
а если обнулить?
...то будет утечка.
1
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
21.07.2012, 00:52 #4
А если использовать unique_ptr вместо обычных указателей, то можно и обнулять, и erase делать смело...
1
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 200
21.07.2012, 12:52  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
А если использовать unique_ptr вместо обычных указателей, то можно и обнулять, и erase делать смело...
Это стандартное?

Добавлено через 7 минут
А вот еще вопрос, если я храню вектор с указателями в некотором классе Х, а объекты этого класса в свою очередь храню в векторе из другого класса Y, что произойдет, если я очищу этот вектор из класса Y? В деструкторе для класса X прописано удаление указателей из вектора X перед его очисткой.
0
bigredcat
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
21.07.2012, 12:57 #6
Цитата Сообщение от xam max Посмотреть сообщение
Это стандартное?
Да, но только начиная с С++11, для компиляторов поддерживающих предыдущий стандарт можно использовать auto_ptr
0
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,663
Записей в блоге: 17
21.07.2012, 13:03 #7
можно использовать auto_ptr
Нельзя не тот случай!

Нужно читать что что больше подходит из набора умных указателей boost::shared_ptr
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2012, 13:03
Привет! Вот еще темы с ответами:

удаление указателей - C++
Я создал указатель и выделил память vector &lt; vector &lt;Obj&gt; &gt; *p_L = new vector&lt; vector &lt;Obj&gt; &gt;; Как мне теперь освободить...

Удаление списка указателей - C++
Здорова! Есть задачка: Определите список указателей, который уничтожает объекты, адресуемые этими указателями, во время уничтожения...

Применение и удаление указателей - C++
Здравствуйте. Я не могу понять сути,когда нам нужно удалить указатель для освобождения памяти. Есть указатель: int...

Удаление массива указателей - C++
есть класс: class test { private: static test **list; static int count_object; public: void mesto::Add() {


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.07.2012, 13:03
Ответ Создать тему
Опции темы

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