Sobes.tech
Junior — Middle

Hansı yaddaş növləri mövcuddur və onlar necə qarşılıqlı əlaqədədirlər?

sobes.tech Süni İntellekt

AI-dan cavab

Go (Golang) dilində əsas yaddaş növləri və onların qarşılıqlı əlaqəsi aşağıdakı kimidir:

  • Yığım (Stack) — funksiyaların yerli dəyişənlərini saxlayır. Yığım sürətlə ayrılır və funksiyadan çıxış və qayıdış zamanı sərbəst buraxılır.

  • Yığın (Heap) — dinamik yaddaş ayırması üçün istifadə olunur, məsələn, hazırda olan funksiyadan daha uzun ömür sürən obyektlər üçün. Go-nun bir çöp toplayıcısı var və o, yığımın təmizlənməsini idarə edir.

  • Qlobal/statik yaddaş — qlobal dəyişənlər və sabitlər üçün.

Əlaqə:

  • Funksiya çağırıldıqda, yerli dəyişənlər yığıma yerləşdirilir.
  • Əgər dəyişənin daha uzun yaşaması lazımdırsa, tərtibçi onu "qaçış analizi" ilə yığımına köçürə bilər.
  • Çöp toplayıcı, obyektlər əlçatmaz olduqda, yığımındakı yaddaşı avtomatik olaraq sərbəst buraxır.

Nümunə:

func foo() *int {
    x := 10
    return &x // x "qaçıb" yığıma keçir, çünki göstərici qaytarılır
}

Burada, x dəyişəni yığıma yerləşdiriləcək ki, göstərici funksiyadan çıxandan sonra da etibarlı qalsın.