当它被删除时,双链表中的动态分配内存会发生什么?

时间:2012-12-01 12:18:34

标签: c++ linked-list

假设我有一个双向链表,它有一个指向第一个节点的指针,称为“第一个”。现在假设我想为这个双向链表创建一个删除“第一个”节点的函数(假设该函数完成了第二个图片中已完成的操作;即,新的指针节点已被声明为前一个第一个和第一个已迭代一次)。现在我的问题是:如果我删除新的第一个,首先的PREV现在指向NULL吗?如果没有,它指的是什么?基本上,我想知道我是否需要明确定义first-> PREV = NULL或者删除新的第一个是否会完成相同的任务。

注意:如果不清楚,向上箭头表示PREV,向下箭头表示NEXT。

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要明确地执行此操作。解除分配对象时,指向它的指针不会重置为null;他们被甩了。

答案 1 :(得分:2)

当您调用delete时,您只需释放该内存,如果指针指向该内存区域,则不会更改其值。
因此,在删除节点的函数中,您还必须将指向已删除区域的指针设置为NULL(或nullptr)。