<分区>
我有一个简单的问题。
考虑下面的代码:
#include <iostream>
struct Node {
int data;
Node *left;
Node *right;
Node(int pData) : data(pData), left(nullptr), right(nullptr) {}
};
void delete_node(Node *node) {
delete node;
node = nullptr;
}
int main() {
Node *node1 = new Node(1);
Node *node2 = new Node(2);
delete_node(node1);
delete node2;
node2 = nullptr;
if (node1) std::cout << "node1: " << node1->data << std::endl;
if (node2) std::cout << "node2: " << node2->data << std::endl;
return 0;
}
产生输出:
node1: -572662307
我觉得这很奇怪,因为我在函数 delete_node
中设置了 node1 = nullptr
。有人可以解释一下吗?