gpt4 book ai didi

c++ - 将节点设置为 NULL 与删除节点之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:34 27 4
gpt4 key购买 nike

假设我有一个定义如下的节点结构:

struct Node
{
int data;
Node* left;
Node* right;
}

假设我有一个节点 Node abc 和 xyz 并且:

abc->data = 1;
abc->right=NULL;
abc->left=xyz;

xyz->data =2;
xyz->right=NULL;
xyz->left=NULL;

后面如果要删除节点xyz,是不是也一样:

delete xyz 

对比说:

xyz=NULL;

有人可以解释一下区别或指出正确的方向吗?

最佳答案

不,不一样。 delete X; 语句实际上调用了 X 指向的对象的析构函数,并释放/释放之前由 operator new 为该对象分配的内存。 .

X = NULL; 语句只是将地址 0x0 分配给指针 X,既不销毁 X 指向的对象,也不释放内存而不是 delete .

关于c++ - 将节点设置为 NULL 与删除节点之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22642698/

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