“Bellek yığını (Stack) Ve Yığın Belleği (Heap) Nedir ?”

Bellek Yığını (Stack) ve Yığın Belleği (Heap), bilgisayar bilimlerinde programların çalışma zamanında veri depolamak için kullandığı iki ana bellek alanını ifade eder. İşte bu iki bellek alanının temel özellikleri:

Bellek Yığını (Stack):

  • Yerel değişkenler, fonksiyon çağrıları ve işlem sırasında kullanılan geçici veriler gibi programın çalışma zamanı verileri burada depolanır.
  • Bellek yığını, programın çalışma zamanında yerel değişkenlerin ve fonksiyon çağrılarının yönetimi için kullanılan bir veri yapısıdır.
  • Yığın, genellikle sabit boyutlu ve hızlı erişim sağlayan bir bellek bölgesidir. Bu nedenle, yığında depolanan verilere hızlı bir şekilde erişmek mümkündür..
  • Her bir fonksiyon çağrısı sırasında, fonksiyonun parametreleri, yerel değişkenleri ve geri dönüş adresi yığında saklanır.
  • Fonksiyonların çalışma süresi boyunca oluşturulan yerel değişkenler burada saklanır.
  • Yığın veri yapısı, LIFO (Son giren, İlk çıkan) prensibiyle çalışır. Yani, en son eklenen veri, yığının en üstüne eklenir ve yığının en üstündeki veri en son eklenen veridir.
  • Derleyici, yığın için bellek yönetimini genellikle otomatik olarak yapar ve yığının boyutu derleme zamanında belirlenir. Bu nedenle, yığının boyutu genellikle sabittir.
  • Verilerin Stack’te saklanması ve erişilmesi hızlıdır, ancak boyutu sabittir ve dinamik olarak genişletilemez.

Yığın Belleği (Heap):

  • Runtime’da program tarafından dinamik olarak oluşturulan veriler ve nesneler genellikle Heap belleğinde saklanır.
  • Nesneleri içeren ve ayrıca referans değişkenlerini de içerebilen bir bellek bölümüdür.
  • Veriler düzensiz bir şekilde saklanır ve sıralı değildir.
  • Erişimi bellek yığınına göre daha yavaştır ve genellikle geliştirici tarafından yönetilir.
  • Büyük ve kompleks veri yapıları için kullanılır.
  • Bellek yığınına erişim, yığın veri yapısına göre genellikle daha yavaş olabilir, çünkü dinamik bellek tahsisi ve serbest bırakma işlemleri gerektirir.
  • Bellek yığını, dinamik olarak oluşturulan verilerin ve nesnelerin depolandığı bir bellek bölgesidir.
  • Genellikle diziler, nesneler ve diğer karmaşık veri yapıları gibi dinamik olarak oluşturulan veriler bu bellek bölgesinde saklanır.
  • Heap belleğine erişim ve verilerin işlenmesi, Stack’e göre daha maliyetlidir, ancak daha büyük ve dinamik veri yapılarının depolanması için uygundur.

“Her iki bellek alanı da programın verimli çalışması için önemlidir ve hafıza yönetimi, yazılım geliştirme sürecinde kritik bir rol oynar. Stack’de hatalı bir kullanım, stack buffer overflow gibi sorunlara yol açabilirken, Heap’te ise bellek sızıntıları (memory leaks) meydana gelebilir. Bu yüzden geliştiricilerin bu iki bellek alanını doğru kullanmaları ve bellek yönetimine dikkat etmeleri gerekmektedir”

Stack Veri Yapısı Avantajları

Yığın veri yapısını kullanmanın birçok avantajı vardır. Bunlardan bazıları :

  • Hızlı veri ekleme ve çekme işlemleri yapılabilir.
  • Stack, LIFO (Last In First Out) prensibiyle çalıştığından, veri çekme işlemleri için sıralama gerekmez.
  • Stack, fonksiyon çağrıları gibi, sırayla işlem yapılması gereken durumlarda çok yararlıdır.

Stack Veri Yapısı Dezavantajları

  • Stack, veri ekleme ve çekme işlemlerinin sadece stack’in en üstünde yapılabildiği için, stack’ten ortadaki veya alt kısımdaki veriler çekilemez.
  • Stack, sadece veri ekleme ve çekme işlemlerini destekler. Bu nedenle, stack’ten veri arama, sıralama gibi işlemler yapılamaz.
  • Stack, sabit boyutlu olursa, daha fazla veri ekleyemeyeceği için sınırlıdır. Bu nedenle, stack’in büyüyen boyutlu olması daha uygun olabilir, ancak bu da daha fazla bellek gerektirir.

Stack Veri Yapısı Örnek

Bu örnekte anlamak için C programlama dili kullanacağız. Sizler dilerseniz farklı dillerde de yazabilirsiniz.

Bu örnekte, stack veri yapısı oluşturulduktan sonra, push işlemiyle stack’e 5, 10 ve 15 değerleri eklenmiştir. Daha sonra pop işlemiyle stack’ten sırasıyla 15, 10 ve 5 değerleri çekilmiştir.

Peki ama nasıl çalışıyor abi bu stack?

Öncelikle stack bir LIFO (Last In First Out) data structures’dır. Somutlaştırmak adına LIFO’yu şöyle düşünebiliriz:

İçine kitapların yalnızca üst üste yerleşebildiği kapağı açık boş bir kutu düşünün. Örnek olarak, kutuya üst üste 5 kitap koydunuz. Kutudan çıkaracağınız ilk kitap 5. koyduğunuz kitap olacaktır. Yani son giren 5. kitap ilk çıkacak kitaptır. LIFO dediğimiz olay da tam olarak budur. Aşağıdaki görselle de bunu somutlaştırabilirsiniz.

 Yığın ve Yığın Belleği

Hem yığın hem de yığın belleği bilgisayarın RAM’inde (Rastgele Erişim Belleği) bulunur:

Yığın belleği ve yığın belleği çeşitli şekillerde farklılık gösterir. Başlıca farklılıkları aşağıdaki tabloda vurgulanmıştır:

 konulu yazılarımızı’da okumak isterseniz buradan tümüne ulaşabilirsiniz.

Yorum Yap

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir