Home  >  Article  >  Backend Development  >  Regarding the old array being left out, when Slice refers to the newly created array, when cap is exceeded in golang

Regarding the old array being left out, when Slice refers to the newly created array, when cap is exceeded in golang

WBOY
WBOYforward
2024-02-10 21:33:08654browse

Regarding the old array being left out, when Slice refers to the newly created array, when cap is exceeded in golang

php editor Youzi will introduce to you a problem about old arrays being omitted in this article, and explain that in golang, when Slice refers to a newly created array, when the cap is exceeded What happens when. This question involves the dynamic changes of Slice and arrays. For developers who are learning or using golang, it is an important knowledge point that needs to be understood and mastered. Through the answers in this article, I hope it can help everyone better understand and apply this concept.

Question content

What happens to the underlying array in the slice when a new array is created and the slice or any other variable no longer references the old array?

Suppose we create an empty slice with a length of 3 and an upper limit of 4 Then when we try to append an element that exceeds the capacity of the slice.

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

In the above program, what will happen to the old array, since it is no longer referenced by a slice or any other variable, will its memory be released or will it remain in memory until the program completes execution? p>

Workaround

If there is no live reference anywhere in this array, it will be garbage collected. If there is at least one reference to any element in the array, the array will remain in memory until the reference disappears.

The above is the detailed content of Regarding the old array being left out, when Slice refers to the newly created array, when cap is exceeded in golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete