Junior — Middle
Se schimbă cantitatea de memorie disponibilă sau capacitatea atunci când dimensiunea unui slice este redusă în limbajul de programare?
sobes.tech AI
Răspuns de la AI
În limbajul Go, un slice este o structură care conține un pointer către un array, o lungime și o capacitate.
Reducerea lungimii unui slice (de exemplu, folosind slice = slice[:newLength]) schimbă doar lungimea — numărul de elemente disponibile pentru citire și scriere. Capacitatea și memoria alocată rămân aceleași, deoarece slice-ul încă face referire la același array.
Dacă doriți să reduceți capacitatea și să eliberați memorie, trebuie să creați un nou slice și să copiați elementele necesare în el, de exemplu:
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])
Astfel, reducerea lungimii slice-ului nu schimbă capacitatea și memoria alocată, deci memoria nu este eliberată automat.