Heim  >  Artikel  >  Backend-Entwicklung  >  In Bezug auf das Weglassen des alten Arrays, wenn Slice auf das neu erstellte Array verweist, wenn die Obergrenze in Golang überschritten wird

In Bezug auf das Weglassen des alten Arrays, wenn Slice auf das neu erstellte Array verweist, wenn die Obergrenze in Golang überschritten wird

WBOY
WBOYnach vorne
2024-02-10 21:33:08655Durchsuche

In Bezug auf das Weglassen des alten Arrays, wenn Slice auf das neu erstellte Array verweist, wenn die Obergrenze in Golang überschritten wird

php-Editor Youzi wird Ihnen in diesem Artikel ein Problem mit dem Weglassen alter Arrays vorstellen und erklären, was passiert, wenn die Obergrenze überschritten wird, wenn Slice auf ein neu erstelltes Array in Golang verweist. Diese Frage betrifft die dynamischen Änderungen von Slice und Arrays. Für Entwickler, die Golang lernen oder verwenden, ist dies ein wichtiger Wissenspunkt, der verstanden und beherrscht werden muss. Ich hoffe, dass die Antworten in diesem Artikel jedem helfen können, dieses Konzept besser zu verstehen und anzuwenden.

Frageinhalt

Was passiert mit dem zugrunde liegenden Array im Slice, wenn ein neues Array erstellt wird und das Slice oder eine andere Variable nicht mehr auf das alte Array verweist?

Angenommen, wir erstellen ein leeres Segment mit einer Länge von 3 und einer Obergrenze von 4 Wenn wir dann versuchen, ein Element anzuhängen, das die Kapazität des Slice überschreitet.

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

Was passiert im obigen Programm mit dem alten Array, da es nicht mehr vom Slice oder einer anderen Variablen referenziert wird? Wird sein Speicher freigegeben oder bleibt es im Speicher, bis das Programm die Ausführung abschließt? p>

Problemumgehung

Wenn in diesem Array nirgendwo eine Live-Referenz vorhanden ist, wird sie durch Garbage Collection erfasst. Wenn mindestens ein Verweis auf ein Element im Array vorhanden ist, bleibt das Array im Speicher, bis der Verweis verschwindet.

Das obige ist der detaillierte Inhalt vonIn Bezug auf das Weglassen des alten Arrays, wenn Slice auf das neu erstellte Array verweist, wenn die Obergrenze in Golang überschritten wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen