提问人:Pranaav S 提问时间:9/30/2023 更新时间:9/30/2023 访问量:41
关于旧数组被遗漏,当 Slice 被引用到新创建的数组时,当 golang 中超过 cap 时
About the old array being left out, when Slice is referenced to a newly created array, when cap is exceeded in golang
问:
当创建新数组并且切片或任何其他变量不再引用旧数组时,切片中的基础数组会发生什么情况?
假设,我们创建一个 length=3 且 cap=4 的空切片 然后,当我们尝试附加超出切片容量的元素时。
slice:=make([]int,3,4)
slice = append(slice, 6,7) //exceeds the cap, when appending 7
fmt.Println(slice)
在上面的程序中,旧数组会发生什么,因为它不再被切片或任何其他变量引用,它的内存会被释放还是会留在内存中直到程序完成执行?
答:
4赞
Burak Serdar
9/30/2023
#1
如果没有对该数组中任何位置的实时引用,则将对其进行垃圾回收。如果至少有一个对数组中任何一个元素的引用,则该数组将保留在内存中,直到该引用消失。
评论