Verandert de beschikbare geheugenruimte of capaciteit wanneer de grootte van een slice wordt verkleind in een programmeertaal?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go is een slice een structuur die een pointer naar een array, een lengte en een capaciteit bevat.
Het verkorten van de lengte van een slice (bijvoorbeeld met slice = slice[:newLength]) verandert alleen de lengte — het aantal elementen dat beschikbaar is voor lezen en schrijven. De capaciteit en het toegewezen geheugen blijven hetzelfde, omdat de slice nog steeds naar dezelfde array verwijst.
Als je de capaciteit wilt verkleinen en geheugen wilt vrijmaken, moet je een nieuwe slice maken en de benodigde elementen daarin kopiëren, bijvoorbeeld:
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])
Op deze manier verandert het verkorten van de lengte van de slice niet de capaciteit en het toegewezen geheugen, dus wordt het geheugen niet automatisch vrijgemaakt.