container/list.Remove() 的源代码试图通过将 nil 分配给特定变量来显式避免内存泄漏,我们为什么要这样做?谢谢!
代码在1.12版本的golang源码中。
// remove removes e from its list, decrements l.len, and returns e.
func (l *List) remove(e *Element) *Element {
e.prev.next = e.next
e.next.prev = e.prev
e.next = nil // avoid memory leaks
e.prev = nil // avoid memory leaks
e.list = nil
l.len--
return e
}
GC不能处理这种情况吗?
元芳怎么了
相关分类