Stack Ne Demek?
Yayın: · Son güncelleme:
Stack Ne Demek? Kısaca
Stack (yığın), son eklenen elemanın ilk çıkarıldığı (LIFO) bir veri yapısıdır. Aynı adla, programın fonksiyon çağrılarını ve yerel değişkenlerini tuttuğu bellek bölgesine de stack denir.

Stack ne demek?
Stack, İngilizcede "yığın" anlamına gelir ve yazılımda iki ilişkili kavramı ifade eder. İlki, elemanların üst üste konduğu bir veri yapısıdır. İkincisi, programın çalışırken fonksiyon çağrılarını takip ettiği bellek bölgesidir. İkisi de aynı kurala uyar: son giren ilk çıkar.
Veri yapısı olarak stack
Üst üste dizilmiş tabakları düşünün. Yeni tabağı en üste koyarsınız, alırken de en üsttekini alırsınız. Stack veri yapısı da bu şekilde çalışır ve bu kurala LIFO (Last In, First Out) denir.
Temel işlemler ikidir. Push, en üste eleman ekler; pop, en üstteki elemanı çıkarır. Peek ise elemanı çıkarmadan en üsttekine bakar. Metin editörlerindeki "geri al" özelliği tipik bir stack kullanımıdır: yaptığınız her değişiklik yığına eklenir, Ctrl+Z en son değişikliği geri çeker. Tarayıcının geri butonu da benzer mantıkla çalışır.
Çağrı yığını nedir?
Program bir fonksiyonu çağırdığında, o fonksiyonun yerel değişkenleri ve dönüş adresi çağrı yığınına eklenir. Fonksiyon bitince bu kayıt yığından çıkarılır ve program kaldığı yerden devam eder. Bu alan hızlıdır ama boyutu sınırlıdır.
Kendini sonsuza kadar çağıran bir özyineleme fonksiyonu yığını doldurur ve "stack overflow" hatası alınır. Hata mesajlarında gördüğünüz stack trace de aslında hatanın oluştuğu andaki çağrı yığınının dökümüdür. Bir hatayı ayıklarken stack trace'i en üst satırdan okumaya başlamak, sorunun kaynağına en kısa yoldan ulaştırır.
Sıkça Sorulan Sorular
Stack nedir, kuyruktan farkı ne?
Stack'te son eklenen eleman ilk çıkar (LIFO). Kuyrukta ise ilk eklenen eleman ilk çıkar (FIFO), tıpkı bir market kasasındaki sıra gibi.
Yazılımda "stack" başka ne anlama gelir?
Teknoloji yığını anlamında da kullanılır. Örneğin "MERN stack", bir projede birlikte kullanılan MongoDB, Express, React ve Node.js teknolojilerinin adıdır.