如何释放Go中的内存? [重复]

问题描述 投票:0回答:1

我开始学习 Go,并发现了一些我无法找到的信息。

例如,如果我正在制作自己的列表结构

type elem struct {
    prev  *elem
    next  *elem
    value string
}

并向其中添加新元素

Current.next = &elem{}

我该如何去除它们?我的意思是,如何从内存中删除 elem 数据,而不仅仅是从列表中删除?

go memory-management garbage-collection
1个回答
21
投票

Go 有垃圾收集功能。它将扫描没有指针的数据并将其从堆中删除(垃圾收集器在您的程序旁边运行)。你唯一应该做的就是:

Current.next = nil

在删除指向它的所有指针后,您的

elem{}
最终将从内存中删除(这不是确定性的。无法准确判断
elem{}
何时会被释放)。垃圾收集有不同的实现方式; Go 的实现可能随时改变。

如果

Current
超出范围,您甚至不需要将
next
设置为
nil

© www.soinside.com 2019 - 2024. All rights reserved.