C++ 自毁运行时错误
我编写了一个链接列表代码,其中有一个函数将链接列表附加到另一个链接列表,但当析构函数调用它时,会导致运行时错误 这是密码C++ 自毁运行时错误,c++,C++,我编写了一个链接列表代码,其中有一个函数将链接列表附加到另一个链接列表,但当析构函数调用它时,会导致运行时错误 这是密码 class doublelist { private : doublelist *L; doublelist *next; double x; public: doublelist(double x[], int size) { if (!x)return; L = new doublelist();
class doublelist
{
private :
doublelist *L;
doublelist *next;
double x;
public:
doublelist(double x[], int size)
{
if (!x)return;
L = new doublelist();
L->x = x[0];
L->next = NULL;
doublelist *temp = L;
for (int i = 1; i < size; i++)
{
temp->next = new doublelist();
temp = temp->next;
temp->x = x[i];
temp->next = NULL;
}
}
~doublelist()
{
doublelist *temp = L;
while (temp)
{
delete temp;
cout << temp;
temp = temp->next;
temp = L;
}
}
};
void main()
{
double a[] = { 3, 2, 5, 6, 1, 7 };
doublelist me(a, 6);
double b[] = { 10, 213, 4 };
me.append(doublelist(b, 3));
me.print();
system("pause");
}
查看析构函数中的以下代码:
delete temp; // calling delete
cout << temp;
temp = temp->next; // using a pointer that has been deleted.
调用delete是使用指针可以做的最后一件安全的事情 删除临时文件;在析构函数中释放后你能有一个用途吗。删除后不能再使用。哦,对不起。。我试图修复代码,但无法修复。这是析构函数~doublelist{doublelist*temp=L;而temp{L=L->next;delete temp;temp=L;}}哦,对不起。。我试图修复代码,但无法修复。这里是析构函数~doublelist{doublelist*temp=L;而temp{L=L->next;delete temp;temp=L;}}}在循环中移动doublelist*temp=L。再次失败。。最好的办法就是调试它。因为你没有发布完整的代码,它可能是任何东西。顺便说一句,main的类型是int而不是void。。如果你愿意,我可以发布所有函数的代码。。
delete temp; // calling delete
cout << temp;
temp = temp->next; // using a pointer that has been deleted.