【发布时间】:2016-12-02 15:28:24
【问题描述】:
我创建了一个双向链表。我的列表仅包含 2 个元素(假设 node1 和 node2),我想删除指向列表中第一个节点 (node1) 的 head 指针。因为在 Cpython 中,垃圾回收的主要算法是引用计数。
现在我的问题是 -(Example-1) 如果我将 self.head 设置为 self.head = self.head.next 并将 node2 prev (上一个)属性设置为 None - 这样做从内存中完全删除第一个节点?因为node1 现在没有其他引用。还是必须调用del 方法,如第二个示例(Example-2) 所示?从内存中完全删除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
【问题讨论】:
标签: python python-3.x garbage-collection