Sobes.tech
Junior — Middle

Ar keičiama prieinamų atminties ar talpos kiekis sumažinus programavimo kalbos skaidinio dydį?

sobes.tech AI

Atsakymas iš AI

Go kalboje, skiltis (slice) yra struktūra, kuri turi nuorodą į masyvą, ilgį ir talpą.

Sumažinus skilties ilgį (pavyzdžiui, naudojant slice = slice[:newLength]), keičiasi tik ilgis — elementų skaičius, prieinamas skaityti ir rašyti. Talpa ir paskirta atmintis lieka tokia pati, nes skiltis vis dar nuoroda į tą patį masyvą.

Jei norite sumažinti talpą ir atlaisvinti atmintį, turite sukurti naują skiltį ir į ją nukopijuoti reikalingus elementus, pavyzdžiui:

oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])

Taip sumažinus skilties ilgį, nepasikeičia talpa ir paskirta atmintis, todėl atmintis automatiškai neatsinaujina.