Junior — Middle
Proqramlaşdırma dilində kəsiklərin ölçüləri və ehtiyat həcm necə yaddaşa yazılır?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, dilim (slice) üç əsas sahəni ehtiva edən bir strukturdur:
- Massivə işarəçi — yaddaşdakı ilk elementin ünvanı.
- Uzunluq (len) — oxumağa əlçatan elementlərin sayı.
- Həcmi (cap) — dilimin yeni yaddaş ayırmadan tuta biləcəyi 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 yaradarkən, müəyyən həcmlə massiv ayrılır. Əgər elementlər əlavə edilərkən uzunluq həcmi aşırsa, daha böyük ölçülü yeni massiv ayrılır və məlumatlar ora köçürülür.
Rezerv olunmuş (capacity) yaddaş idarəçiliyi üçün effektivdir və dilim böyüdükcə ayırmaların sayını azaldır.
Nümunə:
s := make([]int, 3, 5) // len=3, cap=5
s = append(s, 4) // len=4, cap=5
s = append(s, 5) // len=5, cap=5
s = append(s, 6) // len=6, cap=10 (yeni yaddaş ayrılır)
Beləliklə, dilimlərin ölçüləri və rezerv olunmuş həcmləri dilim strukturunda saxlanılır və avtomatik idarə olunur.