Junior — Middle
Mění se množství dostupné paměti nebo kapacita při zmenšení velikosti řezu v programovacím jazyce?
sobes.tech AI
Odpověď od AI
V jazyce Go je řez (slice) struktura, která obsahuje ukazatel na pole, délku a kapacitu.
Při zkrácení délky řezu (například pomocí slice = slice[:newLength]) se mění pouze délka — počet prvků dostupných ke čtení a zápisu. Kapacita a přidělená paměť zůstávají stejné, protože řez stále odkazuje na stejný pole.
Pokud chcete zmenšit kapacitu a uvolnit paměť, je třeba vytvořit nový řez a zkopírovat do něj potřebné prvky, například:
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])
Tímto způsobem zkrácení délky řezu nemění kapacitu a přidělenou paměť, takže paměť se neuvolňuje automaticky.