c++ - Cannot delete linked list when calling the destructor -
void set::remove(set::node* p) { if(p == nullptr) return; node* tmp = p->next; delete p; return remove(tmp); } set::~set() { remove(list); } class set { public: ~set(); private: struct node { int value; node* next; }; node* list; } set& set::operator= (const set& other) { if(this == &other) return *this; list = copy(other.list); sizeoflist = other.sizeoflist; return *this; } set::node* set::copy(set::node* list) { if(list == nullptr) return nullptr; return cons(list->value, copy(list->next)); } set::node* set::cons (int value, set::node* next) { node* tmp = new node; tmp->value = value; tmp->next = next; return tmp; } set() : list(nullptr), sizeoflist(0) {}; i wanted test destructor, call manually(on last line of program)
x.~set(); but got * error object 0x100103ad0: pointer being freed not allocated. dont know have done wrong. have read many related posts possible cant find solution. hope someone's help!
you have no constructor sets list undefined value known one, list never being set , trying delete it.
try adding default constructor sets list = nullptr;
Comments
Post a Comment