Для назначения класса мне нужно реализовать деструктор для объектов связанного списка, которые я создал. Я сделал функцию под названием MakeEmpty
, которую я вызвал внутри деструктора. Он составлен правильно в первый раз, но теперь я получаю мгновенный сбой с сообщением об ошибке, говоря:Как правильно уничтожить связанный список?
Expression: _BLOCK_TYPE_IS_VALID (pHead-> nBlockUse)
Может кто-то помочь мне понять, что не так? Я запустил отладчик и указал, где он говорит, что ошибка в коде.
WORD::~WORD()
{
cout << "Destructor Called"<<endl;
(*this).MakeEmpty();
}
И это функция
void WORD::MakeEmpty()
{
alpha_numeric *p = (*this).front;
if((*this).IsEmpty())
{
cout <<"Already empty"<< endl;
return;
}
while(front != 0)
{
front = front -> next;
delete p;//<<<<---DEBUGGER SAYS ERROR HERE
p = front;
}
return;
}
Buddy, вы удаляете «p», а затем присваиваете ему значение ... Как это возможно! – Swanand
@SwanandPurankar Я хотел удалить узел, на который указывал p, затем переместить p на следующий узел, удалить его и так далее, пока они не исчезнут – Mike
Да, мы получили его ... Но вам не хватает небольшой вещь там ... Проверьте свой код внимательно ... Не ждите ответа ... Это ваша домашняя работа! – Swanand