Утечка памяти!

Модератор: Модераторы разделов

† Stratos †
Сообщения: 19

Утечка памяти!

Сообщение † Stratos † »

Код: Выделить всё

template <class T1> class ListGraph : public GraphATD<T1> {

    struct node {
  node* next;

  node () {
  }
    };

    struct list {
  node* ph;
  list () {
  }

  ~list() {
      delete [] ph;
  }
    };

public:
    list** array;

    ListGraph () {
  array = new list*[sz];
  for (int i=0; i<sz; i++)
      array[i] = new list(vz);
    }

    ~ListGraph() {
  for (int i=0; i<sz; i++)
      delete array[i];
  delete [] array;
    }
};



подскажите пожалуйста, что еще и как мне удалить из памяти, чтобы не было утечки ее родной самой.

чувствую, что загадка кроется рядом с array
Спасибо сказали:
XPhoenix
Сообщения: 28

Re: Утечка памяти!

Сообщение XPhoenix »

struct node
{
node* next;
node ()
{
}
};



struct list
{
node* ph;
list ()
{
}

~list()
{
delete [] ph;
}
};

Теперь давай посмотрим что происходит:
1. Как только ты вызываешь деструктор для листа он удаляет массив
1.1 Вызывается деструктор для каждого node
1.2 Деструктор не перекрыт, поэтому удаляется УКАЗАТЕЛЬ next, но память привязанная к нему не высвобождается...угу?

Только на будующее: ты бы приводил нормальный код.....А то new list(vz); - вызов несуществующего конструктора....мдя. :))
И еще вот тебе ссылка (с кучей исходников с пояснениями), где разобранна (подробно и хорошо) работа со сложными структурами данных: много алгоритмов с исходниками
Спасибо сказали:
† Stratos †
Сообщения: 19

Re: Утечка памяти!

Сообщение † Stratos † »

спасибо большое. =)

как раз именно next оставался в памяти.

[тема закрыта]
Спасибо сказали: