如果声明的指针被删除,是否可以重用它?

Can I reuse a declared pointer if it's deleted?

本文关键字:是否 声明 指针 删除 如果      更新时间:2023-10-16

在链表中,我有以下代码

Node *tmp = head;
Node *del = head->next;
tmp->next = del->next;
delete del;
del = tmp->next;

在我的代码中,我首先删除了指针del,然后将其指向tmp->next。这能行吗?

实际上并没有删除指针变量本身,您只是将它指向的内存区域标记为可供将来分配使用(在调用析构函数之后,但这是另一个主题)。指针变量只携带一个地址。即使在删除指针变量之后,它也没有问题,但是它指向的内存区域已经被释放,所以它的内容是未定义的。

当指针变量被重新赋值为指向另一个内存地址时,它将与旧的,"已删除"的内存部分完全无关。