gpt4 book ai didi

c++ - 如果有两个指向同一个数据结构的指针,删除了一个,如何检查另一个是否存在?

转载 作者:太空狗 更新时间:2023-10-29 20:53:24 26 4
gpt4 key购买 nike

这是示例代码:

Node *n1 = new Node();
Node *n2 = new Node();
Node *n3 = new Node();

qWarning() << "Setting node names";
n1->setName("N1");
n2->setName("N3");
n3->setName("N3");

qWarning() << "Creating list";
QList<Node*> list;

list << n1 << n2 << n3;

qWarning() << "List iteration:";
for (int i = 0; i < list.size(); i++){
qWarning() << "Node:" << list.at(i)->getName();
}

if (n1 != NULL){
qWarning() << "N1 EXISTS";
}
else{
qWarning() << "N1 DOES NOT EXIST";
}

qWarning() << "Clearing list, CLEARING EVERYTHING";
//list.clear();

while (list.size() > 0){
Node *n = list.first();
list.removeFirst();
delete n;
}

qWarning() << "Accessing nodes";

if (n1 != NULL){
qWarning() << "N1 EXISTS";
}
else{
qWarning() << "N1 DOES NOT EXIST";
}

问题是两次打印输出都是 N1 EXISTS。但是,显然,如果我在访问节点消息后尝试访问 n1,程序将会崩溃。如何检查 n1 指向的数据结构是否确实存在?

最佳答案

删除指针并不会删除指针本身,它只会释放指针指向的内存。删除指针后,如果您尝试访问指针指向的内存位置,它将调用未定义的行为

关于c++ - 如果有两个指向同一个数据结构的指针,删除了一个,如何检查另一个是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42904205/

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