Junior — Middle
Hansı hallarda tərtibçi avtomatik olaraq dinamik sahədə (yığım) yaddaş ayırır?
sobes.tech Süni İntellekt
AI-dan cavab
Go tərtibçisi, aşağıdakı vəziyyətlərdə avtomatik olaraq yığın yaddaşı ayırır:
- Bir dəyişən, onun elan olunduğu funksiyanın icra müddətindən daha uzun yaşamalıdırsa (qaçış analizi). Məsələn, yerli dəyişənin ünvanı funksiyadan qaytarılırsa və ya daha uzun müddət yaşayan bir quruluşa saxlanılırsa.
- Dəyişən çox böyükdürsə və ya ölçüsü tərtib zamanı məlum deyilsə.
Nümunə:
func create() *int {
x := 10
return &x // dəyişən x "qaçır" yığına, çünki göstərici qaytarılır
}
Burada, x dəyişəni yığında yerləşdiriləcək ki, göstərici funksiyadan çıxandan sonra da etibarlı qalsın. Tərtibçi kodu analiz edir (qaçış analizi) və yaddaşın harada ayrılacağına qərar verir.