对于类分配,我需要为我创建的链表对象实现一个析构函数。我做了一个叫做MakeEmpty的函数,我在析构函数中调用了它。第一次正确编译,但是现在我立即崩溃,并显示一条错误消息:


  表达式:_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)


有人可以帮助我找出问题所在吗?我运行调试器,并指出该错误在代码中的位置。

WORD::~WORD()
{
cout << "Destructor Called"<<endl;

(*this).MakeEmpty();
}


这是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;
}

最佳答案

您遇到编码错误...您需要:进行代码检查!

写下每个语句以及循环的每次迭代中所有变量的期望值。不要跳过任何步骤。这将使您的编码错误变得明显。

30年后,我脑子里做了这个。.但是我总是这样做,以确保我写的东西是正确的。这个习惯会在未来几年为您服务。

关于c++ - 如何正确销毁链表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10943305/

10-10 21:54