Показать сообщение отдельно

Проблема с овобождением памяти в C++?
  #1  
Старый 18.03.2009, 13:05
ZipaCna
Познающий
Регистрация: 29.02.2008
Сообщений: 66
С нами:
9577447

Репутация: 33
По умолчанию Проблема с овобождением памяти в C++?

Вообще не могу понять в чем проблема. Удаляет столько же элементов сколько и выделялось по тем же адресам. При небольшом числе элементов всё ок а когда много, то ошибка.
Плизз хелп



Код:
struct my_list{
int o;
my_list *prev;
my_list *next;
};


int _tmain(int argc, _TCHAR* argv[])
{
vector<my_list*> test; //для дебага

my_list first;
first.prev=NULL;
first.next=NULL;
my_list *curr;
curr=&first;

/////////////////////////////////
//вставляет элементы в конец списка
for (int i=0;i<100000;i++){
  my_list *temp;
  temp=new my_list;
  //temp->prev=NULL;
  temp->next=NULL;
  //cout<<temp<<endl;
  test.push_back(temp); //для дебага
  curr->next=temp;
  temp->prev=curr;
  curr=temp;
}
///////////////////////////

/////////////////////////
//освобождает список
//можно было освобождать с хвоста списка но мне нужно так.
int ii=0; //для дебага
my_list *temp,*a;
a=&first;
while(a->next){
	a=a->next;
	temp=a->prev;
	temp->next=a->next;
	//cout<<a<<endl;
	if(a!=test[ii])cout<<"error"; //для дебага
	ii++; //для дебага
	delete a; 
	a=temp;
}
/////////////////////////////////////////////////
   return 0;
}
 
Ответить с цитированием