【发布时间】:2017-07-26 08:34:14
【问题描述】:
让我有一个带有字符串键和指向结构的指针值的映射
type Entity struct{}
entity := &Entity{}
m := map[string]*Entity{"foo":entity}
我得到值并稍后删除条目
en := m["foo"]
delete(m, "foo")
我的问题是,由于指向它的指针已从映射中删除,内存是否会被垃圾回收?另一方面,我在删除条目之前有新的指针 en,它是指针的副本也指向相同的内存位置,因此即使映射条目也不会被垃圾收集内存被删除?我很困惑,感谢您的帮助。
【问题讨论】:
-
感谢@icza 指向另一个帖子已经有了答案。
-
这段代码sn-p表明如果使用另一个指针来存储地址play.golang.org/p/YC4ax6k6dm,内存不会被垃圾回收
-
我不明白这完全是一个骗局——将一个条目放入映射中是返回一个指向该条目的指针还是一个副本?似乎在我的测试中它返回了一个真的很垃圾的副本
标签: go