如何释放记忆? [重复]

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

这个问题在这里已有答案:

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

例如,如果我正在创建自己的列表结构

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

并添加新的元素

Current.next = &elem{}

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

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

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

Current.next = null

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

如果Current超出范围,则不需要将next设置为null

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