Sobes.tech
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])

По този начин, намаляването на дължината на среза не променя капацитета и заделената памет, така че паметта не се освобождава автоматично.