Sobes.tech
Junior — Middle

Derleyicinin dinamik alan (yığın) içinde otomatik olarak bellek ayırdığı durumlar nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go derleyicisi, aşağıdaki durumlarda otomatik olarak yığın (heap) belleği ayırır:

  • Bir değişken, tanımlandığı fonksiyonun çalışma süresinden daha uzun yaşayacaksa (kaçış analizi). Örneğin, bir yerel değişkenin adresi bir fonksiyondan döndürülüyorsa veya daha uzun süre yaşayan bir yapıya kaydediliyorsa.
  • Değişken çok büyükse veya boyutu derleme sırasında bilinmiyorsa.

Örnek:

func create() *int {
    x := 10
    return &x // x değişkeni "kaçıyor" heap'e, çünkü bir gösterici döndürülüyor
}

Burada, x değişkeni, göstericinin fonksiyon dışına çıktıktan sonra geçerli kalması için heap'e yerleştirilecektir. Derleyici, kodu analiz eder (kaçış analizi) ve belleğin nerede ayrılacağına karar verir.