2017-12-26 13:17 阅读 45

如何释放存储空间? [重复]

This question already has an answer here:

I've started to learn Go, and found something I'm not able to find info about.

For example, if I'm making my own list structure

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

And adding new elements to it with

Current.next = &elem{}

How should I remove them? I mean, how can I remove data of elem from memory, not just from the list?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    douyi3676 douyi3676 2017-12-26 14:22

    Go has garbage collection. It will scan for data that has no pointer to it and remove it from heap (Garbage collector is running beside your program). The only thing you should do is:

    Current.next = nil

    Your elem{} will be removed from memory eventually after you remove all pointers to it (It's not deterministic. Can't tell exactly when elem{} will be released). There are different implementations of garbage collection; Go's implementation may change at any time.

    If Current goes out of scope, you don't even need to set next to nil.

    点赞 评论 复制链接分享