【发布时间】:2019-04-28 07:43:38
【问题描述】:
我正在尝试创建一个 AVL 树并在其中插入一个节点。每当我尝试在树节点中添加数据值时,我的程序都会崩溃并返回值 0xC0000005。这是我在头文件中引入数据项的方式:
class AVLTreeNode
{
public:
int data;
AVLTreeNode();
virtual ~AVLTreeNode();
AVLTreeNode(int d, AVLTreeNode *leftChild, AVLTreeNode *rightChild);
AVLTreeNode *leftc;
AVLTreeNode *rightc;
int height;
}
每当我尝试在插入函数中运行以下代码行时,都会崩溃。
AVLTreeNode *nw = NULL ;
nw->data = v;
我不知道我做错了什么,请帮助我。
【问题讨论】:
-
AVLTreeNode *nw = NULL ; nw->data = v;这是未定义的行为。而是创建一个对象。 -
指针必须指向一个实例(也称为对象)才能使用其中的方法和变量。您现在说
AVLTreeNode *nw是“NULL”。然后,您正在访问 NULL 指针以设置值。确保指针指向一个对象 -
@PeterRuderman 你为什么一直添加窗口?这里没有理由有一个 windows 标签。
-
返回码 0xC0000005 是特定于 Windows 的。当您的程序因访问冲突而崩溃时,就会发生这种情况。
-
这位 OP 显然是个初学者,但这确实意味着他不认真。他花时间将崩溃范围缩小到特定行,并根据本网站的要求发布了minimal reproducible example。了解0xC0000005返回码的含义也很有用,一般常识。