为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中使用指针值清除地图

在 Go 中使用指针值清除地图

Go
喵喔喔 2021-06-27 12:49:22
我有一个 map[string]*list.List 并且每个列表节点也是一个指针。通过简单地将映射清零,所有映射和列表以及所有这些指针都将被清除并垃圾收集并准备再次使用吗?type UnrolledGroup struct {                                                                                                                                              next int    s    []uint32 } var dictionary = struct {     m    map[string]*list.List     keys []string                                                                                                                                                     }{m: make(map[string]*list.List)} l := list.New() newGroup := UnrolledGroup{next: 1, s: make([]uint32, groupLen)} newGroup.s[0] = pos l.PushBack(&newGroup) dictionary.m[token] = l现在这清楚了整个事情吗? dictionary.m = nil
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

这取决于:如果不再“可达”,一切都将被 GC 处理。如果您保留对存储在地图中的内容的其他引用,则不会收集它。如果地图是这些对象的唯一根,它们将被收集。(不要想太多这些东西。)


查看完整回答
反对 回复 2021-07-12
?
白板的微信

TA贡献1883条经验 获得超3个赞

map是一个引用类型,即它是一个指向底层结构的指针类型。您可以将指针设置为nil,但是如果其他人拥有指向相同底层结构的指针,那么他们仍然拥有对内部所有事物的引用。


查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信