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

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

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

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rudeeeboy
14 / 14 / 1
Регистрация: 08.11.2010
Сообщений: 172
21.07.2012, 00:05     Удаление указателей из вектора #2
а если обнулить?
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,909
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 Посмотреть сообщение
а если обнулить?
...то будет утечка.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
21.07.2012, 00:52     Удаление указателей из вектора #4
А если использовать unique_ptr вместо обычных указателей, то можно и обнулять, и erase делать смело...
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 перед его очисткой.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
21.07.2012, 12:57     Удаление указателей из вектора #6
Цитата Сообщение от xam max Посмотреть сообщение
Это стандартное?
Да, но только начиная с С++11, для компиляторов поддерживающих предыдущий стандарт можно использовать auto_ptr
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2012, 13:03     Удаление указателей из вектора
Еще ссылки по теме:

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

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

Удаление содержимого указателей, хранящихся в векторе - C++
Здравствуйте! Меня озадачила одна проблема: допустим у нас есть вектор указателей, ссылающихся на класс А: vector&lt;A*&gt; va; Мы его...

Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк - C++
Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк...

Удаление из вектора - C++
1)В программе используется вектор которых хранит объекты некоторого класса, можно ли удалить из его середины(любого произвольного места)...


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

Или воспользуйтесь поиском по форуму:
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
21.07.2012, 13:03     Удаление указателей из вектора #7
можно использовать auto_ptr
Нельзя не тот случай!

Нужно читать что что больше подходит из набора умных указателей boost::shared_ptr
Yandex
Объявления
21.07.2012, 13:03     Удаление указателей из вектора
Ответ Создать тему
Опции темы

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