关于旧数组被遗漏,当Slice引用新创建的数组时,当golang中超过cap时

问题描述 投票:0回答:1

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

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

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

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

go memory slice
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.