我创建了一个双链接列表。我的列表只包含2个元素(假设node1
和node2
),我想删除指向列表中第一个节点(node1
)的head
指针。因为在Cpython中,垃圾收集的主要算法是引用计数。你知道吗
现在我的问题是-(Example-1)如果我将self.head
设置为self.head = self.head.next
,并将node2
prev
(previous)属性设置为None
,这是否会从内存中完全删除第一个节点?因为node1
现在没有其他引用。或者必须调用del
方法,如第二个示例(示例-2)所示?从meomory中完全删除node1
的正确方法是什么?你知道吗
示例1:
def remHead(self):
temp=self.head.next
self.head=self.head.next
temp.prev=None
示例2:
def remHead(self):
temp=self.head.next
del self.head
self.head=temp
self.head.prev=None
通过
del self.head
,可以删除对节点的引用,而不是节点本身。通过重新分配,对节点的引用丢失。通常,在这两种情况下,没有任何东西指向下一个节点。一般来说,Python会在没有引用时立即从内存中删除某些内容。所以,在你的例子中,两者的结果是一样的。我宁愿只是重新分配,而不删除PS:当然,假设引用没有保存在代码的其他地方
相关问题 更多 >
编程相关推荐