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

我有一个 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


喵喔喔
浏览 240回答 2
2回答

LEATH

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

白板的微信

map是一个引用类型,即它是一个指向底层结构的指针类型。您可以将指针设置为nil,但是如果其他人拥有指向相同底层结构的指针,那么他们仍然拥有对内部所有事物的引用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go