Sobes.tech
Junior — Middle

Dilimin bellek üzerindeki gerçek boyutuna dönüşüm nasıl gerçekleşir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, dilim (slice) şu yapıyı içerir:

  • bir diziye işaretçi,
  • uzunluk (len),
  • kapasite (cap).

Dilim uzunluğu, içerdiği öğe sayısıdır ve bellek üzerindeki gerçek boyut, kapasite ve öğe tipinin boyutuna bağlıdır.

Örneğin, int tipinde (genellikle 8 bayt) uzunluğu 5 ve kapasitesi 10 olan bir dilim varsa, bellekte 10 öğe için yer ayrılmıştır (80 bayt), oysa uzunluk 5'tir.

Bellekte dilim boyutu = sizeof(öğe) * cap.

Gösterim kodu:

package main
import (
    "fmt"
    "unsafe"
)
func main() {
    s := make([]int, 5, 10)
    fmt.Println("len:", len(s))
    fmt.Println("cap:", cap(s))
    fmt.Println("size in bytes:", unsafe.Sizeof(s[0])*uintptr(cap(s)))
}