Re: STL Link List Problem
Barry wrote:
cplusplusquestion@gmail.com wrote:
#include <iostream>
#include <list>
using namespace std;
struct Cell{
list<int> vertices;
bool counted;
Cell* nextCell;
Cell(){
counted=false;
nextCell=NULL;
}
~Cell(){
Cell* tmp = nextCell;
Cell* current_ptr = nextCell;
while(tmp != NULL){
current_ptr = current_ptr->nextCell;
delete tmp;
free(tmp);
calling delete will recursively call you ~Cell() and
std::vector<int>::~vector()
tmp = current_ptr;
}
}
};
int main(){
Cell* a = new Cell;
Cell* b = new Cell;
Cell* c = new Cell;
a->nextCell = b;
b->nextCell = c;
delete a;
return 0;
}
It compiles, but run the program, gets segmentation fault. If there is
no list<int> vertices, it will be fine. Or if no coding in destructor
and keep list<int> vertices, it's no problem too. Any idea?
so you're destructing vertices more than once within one Cell
std::vector<int> helping detect the error
sorry, list<int>
and moreover, if use *free* other than *delete*, then /vertices/ won't
be destructed, which causes memory leak
--
Thanks
Barry