Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Уничтожение списка указателей.

Posted on 16 июня, 201316 июня, 2013 by admin

Определите список указателей, который уничтожает объекты, адресуемые этими указателями, во время уничтожения самого списка или при удалении элемента из списка операцией remove.

Я в общем тестил просто из std::list просто так не удаляются, нужно сделать наследование и переопределить std::list::remove и деструктор тоже добавим в нем удалим память. В общем от примерчик:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
using std::cout;
using std::endl;
#include <list>
using std::list;
 
class list1 : public list<int*>
{
public:
void remove(list::iterator it)
{
int* temp=*it;
list::remove(*it);
delete temp;
}
~list1()
    {
        while(!list::empty())
        {
            delete *list::begin();
            list::remove(*list::begin());
        }
        cout <<"konec"<<endl;
    }
};
 
int main()
{
    list1 l;
 
    int* b1=new int(4);
    int* b2=new int(5);
 
    cout <<*b1<<' '<<*b2<<endl;
 
    //добавляем указатели на объекты
    l.push_back(b1);
    l.push_back(b2);
 
    //удаляем
    cout <<*l.begin()<<' '<<b1<<endl;//адреса одинаковые
    l.remove(l.begin());//удаление
    l.remove(l.begin());//удаление
 
    //если через delete то удаляется
    //delete b1; //утак удалить объект
    cout <<*b1<<' '<<*b2<<endl;
 
    if(l.empty())
        cout <<"l is empty"<<endl;
 
    return 0;
}

[youtube]http://www.youtube.com/watch?v=40M-LQvjVJk[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • uncategorized (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (77)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant