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

WBOY
Freigeben: 2024-02-10 21:33:08
nach vorne
661 Leute haben es durchsucht

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)
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!