如果声明的指针被删除,是否可以重用它?
Can I reuse a declared pointer if it's deleted?
在链表中,我有以下代码
Node *tmp = head;
Node *del = head->next;
tmp->next = del->next;
delete del;
del = tmp->next;
在我的代码中,我首先删除了指针del
,然后将其指向tmp->next
。这能行吗?
实际上并没有删除指针变量本身,您只是将它指向的内存区域标记为可供将来分配使用(在调用析构函数之后,但这是另一个主题)。指针变量只携带一个地址。即使在删除指针变量之后,它也没有问题,但是它指向的内存区域已经被释放,所以它的内容是未定义的。
当指针变量被重新赋值为指向另一个内存地址时,它将与旧的,"已删除"的内存部分完全无关。
相关文章:
- 是否可以同时声明一个类成员的常量/非常量?
- 将类型声明为类型模板参数的模板参数的一部分是否合法?
- 当返回类型声明为 ListNode 时,我们是否可以返回 false<T>*
- 如果在 2 个线程中使用,是否值得将size_t声明为 std::atomic?
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 专用模板是否需要专用声明?
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- 声明中不一致的no是否违反ODR?
- 如果我在相应 char 数组的声明中为其提供额外的元素,是否会自动设置 NULL?
- 是否可以使用 using 将基类中的公共成员重新声明为派生类中的私有成员?
- 'this'指针是否可以在 c++ 标头声明中使用?
- 在类内和类外的定义处执行类转发声明是否有区别
- 前向声明时"结构"和"类"关键字是否相同?
- 是否可以在 "if" 语句中声明变量?
- 从模板基类派生是否在派生类声明的点实例化模板
- 在C++/Cython中,是否可以只声明相关属性在Python中可见
- 这个函数是否声明得很好
- 是否声明抽象类型的字段?首选指针或引用
- 我是否声明了部分专门化的友类?-非常困惑
- 为什么程序的成功取决于是否声明了重载构造函数