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.