gpt4 book ai didi

C++ 新手 : destructor

转载 作者:行者123 更新时间:2023-11-30 03:04:23 27 4
gpt4 key购买 nike

我只是创建一个简单的列表,然后销毁它。出了点问题,我总是收到这个恼人的错误消息:

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

代码如下:

#include<iostream>
#include<Windows.h>
using namespace std;

struct node
{
int data;
node *next;
};

class list
{
protected:
node *top;
public:
list()
{
top=NULL;
}

list random()
{
int x=rand()%10;
for(int i=0; i<x; i++)
{
node *p=new node;
p->data=rand()%100;
p->next=top;
top=p;
}
return *this;
}

void show()
{
for(node *p=top; p; p=p->next)
{
cout<<p->data<<" ";
}
cout<<"\n";
}

~list()
{
node *r;
for(node *p=top; p; p=r)
{
r=p->next;
delete p;
}
}
};

int main()
{
srand(GetTickCount());
list a;
a.random().show();
return 0;
}

最佳答案

这个:

list random()

应该是:

list &random()

原因是您的版本返回实例 a 的拷贝,并且该拷贝在 show() 被调用后被破坏..并且破坏破坏相同a 正在使用的内存。如果你真的想让 random() 返回一个拷贝,你需要实现一个复制构造函数,它对 a 拥有的内部列表进行深度复制。

关于C++ 新手 : destructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com