Junior — Middle
Променя ли се наличната памет или капацитетът при намаляване на размера на среза в езика за програмиране?
sobes.tech AI
Отговор от AI
В езика Go срезът (slice) е структура, която съдържа указател към масив, дължина и капацитет.
При намаляване на дължината на среза (например с slice = slice[:newLength]) се променя само дължината — броят на елементите, достъпни за четене и писане. Капацитетът и заделената памет остават същите, тъй като срезът все още сочи към същия масив.
Ако искате да намалите капацитета и да освободите памет, трябва да създадете нов срез и да копирате нужните елементи в него, например:
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])
По този начин, намаляването на дължината на среза не променя капацитета и заделената памет, така че паметта не се освобождава автоматично.