Cra*_*yWu 2 garbage-collection memory-management go
我开始学习Go,发现了一些我无法找到的信息.
例如,如果我正在创建自己的列表结构
type elem struct {
prev *elem
next *elem
value string
}
Run Code Online (Sandbox Code Playgroud)
并添加新的元素
Current.next = &elem{}
Run Code Online (Sandbox Code Playgroud)
我应该如何删除它们?我的意思是,如何从内存中删除elem的数据,而不仅仅是从列表中删除?
Arm*_*ani 12
Go有垃圾收集.它将扫描没有指针的数据并将其从堆中删除(垃圾收集器正在您的程序旁边运行).你唯一应该做的是:
Current.next = nil
Run Code Online (Sandbox Code Playgroud)
你elem{}会从内存中删除所有指向它最终后取出(这是不确定的.不能确切地告诉何时elem{}将被释放).垃圾收集有不同的实现方式; Go的实施可能随时改变.
如果Current超出范围,则不需要将事件设置next为nil.