Sobes.tech
Junior — Middle

როგორ ინახება მეხსიერებაში კისრების ზომები და რეზერვული მოცულობები პროგრამირების ენაში?

sobes.tech AI

პასუხი AI-სგან

Go dilində, dilim (slice) üç əsas sahəni ehtiva edən strukturdur:

  1. Massivə işarəçi — yaddaşdakı ilk elementin ünvanı.
  2. Uzunluq (len) — oxuna bilən elementlərin sayı.
  3. Həcmi (cap) — yeni yaddaş ayırmadan, dilimin tutduğu maksimum element sayı.

Yaddaşda, dilim təxminən belə təmsil olunur:

type SliceHeader struct {
    Data uintptr // massivə işarəçi
    Len  int     // dilimin uzunluğu
    Cap  int     // dilimin həcmi
}

Dilim yaratarkən, müəyyən həcmlə massiv ayrılır. Əgər elementlər əlavə edilərkən uzunluq həcmi aşarsa, daha böyük ölçülü yeni massiv ayrılır və məlumatlar ora köçürülür.

Rezerv olunmuş (capacity) həcmi yaddaşı effektiv idarə etməyə imkan verir, dilimin böyüməsi ilə ayırmaların sayını azaldır.

Misal:

s := make([]int, 3, 5) // uzunluq=3, həcmi=5
s = append(s, 4)        // uzunluq=4, həcmi=5
s = append(s, 5)        // uzunluq=5, həcmi=5
s = append(s, 6)        // uzunluq=6, həcmi=10 (yeni yaddaş ayırılır)

Beləliklə, dilimlərin ölçüləri və rezerv olunmuş həcmləri dilim strukturasında saxlanılır və avtomatik idarə olunur.