登录
首页 >  Golang >  Go问答

当Go语言中的Slice引用新创建的数组并超过容量限制时,旧数组可能被遗漏

来源:stackoverflow

时间:2024-03-10 16:30:19 390浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《当Go语言中的Slice引用新创建的数组并超过容量限制时,旧数组可能被遗漏》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

当创建新数组并且切片或任何其他变量不再引用旧数组时,切片中的基础数组会发生什么?

假设我们创建一个长度为 3 且上限为 4 的空切片 然后当我们尝试附加一个超出切片容量的元素时。

slice:=make([]int,3,4)
    slice = append(slice, 6,7) //exceeds the cap, when appending 7 
    fmt.Println(slice)

在上面的程序中,旧数组会发生什么,因为它不再被切片或任何其他变量引用,它的内存会被释放还是会保留在内存中直到程序完成执行? p>

正确答案


如果该数组中的任何位置都没有实时引用,它将被垃圾收集。如果至少有一个对数组中任一元素的引用,则该数组将保留在内存中,直到该引用消失为止。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>