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.