Hafızayı genel olarak iki bölüme ayırıyoruz. Bunlar Stack ve Heap olarak adlandırılıyor. Peki bu Stack ve Heap kavramları nedir?

Stack & Heap

Stack ve Heap kısaca ram’in mantıksal bölümleridir ve Stack’e erişim Heap’e göre daha hızlıdır. Stack ve Heap arasındaki en temel fark Stack’deki değerler son giren ilk çıkar (Last-In-First-Out) mantığı ile çalışır. Bu olay Heap’de ise rastgele (random) şeklinde çalışmaktadır.

Primitive data types dediğimiz int, short, long, char, float, double, bool, void gibi tipler value type olarak adlandırılır ve stack’de tutulur. Çalışma zamanında bu değerlerin bilinmesi gerekir ve işletim sistemi program çalışmadan önce stack’de belirli bir yer ayırır. Bu alan yazılımcı tarafından aşılır ise stack overflow ile karşılaşılabilir.

Stack nasıl çalışır?

Stack’in LIFO mantığı ile çalıştığından bahsetmiştik. Bu LIFO mantığının çalışmasını sağlayan iki basit işlem mevcuttur. Bunlar Push & Pop olarak adlandırılır. Peki nedir bu Push & Pop yapıları?

Stack, verilerin belirli bir şekilde depolandığı ve geri alındığı bir veri yapısı olduğunu artık biliyoruz. Bu veri yapısında, veriler en son eklenen (push) ve en son eklenen verinin geri alındığı (pop) şekilde işlenir.

Push & Pop İşleyişi

Diyelim ki bir yığınımız var ve bu yığının tepesine birkaç kitap ekleyeceğiz. İşte “push” ve “pop” işlemleri bu kitapları yığına ekleme ve yığından çıkarma işlemlerini tanımlar:

  1. Push: Yığının en üstüne yeni bir öğe eklemek anlamına gelir. Yani, yeni bir kitabı yığının üstüne koyarsınız. Bu, yığının en üstüne bir veri eklemek için kullanılır.
  2. Pop: Yığının en üstündeki öğeyi çıkarmak anlamına gelir. Yani, en üstteki kitabı alırsınız. Bu, yığının en üstündeki veriyi kaldırmak için kullanılır.

Heap nasıl çalışır?

Heap, dinamik bellek tahsisini yönetmek için kullanılan bir veri yapısıdır. Genellikle, program çalışma zamanında bellekte dinamik olarak oluşturulan verileri depolamak için kullanılır. Heap, “malloc” ve “free” gibi fonksiyonlarla erişilir ve yönetilir.

Bu alan bellekte “malloc” fonksiyonu aracılığı ile ayrılır ve heap üzerinde yer tahsisi yapılan bellek “free” fonksiyonu ile tekrar kullanım için serbest bırakılır.

Stack ve Heap özelliklerini kısaca özetlemek gerekirse;

  1. Stack ve Heap ram’in mantıksal bölümleridir.
  2. Stack LIFO mantığında çalışır. Yani son gelen ilk çıkar mantığı ile çalışır.
  3. Stack’de değer tipleri, pointer ve adresler saklanırken Heap’de ise referans değerleri saklanır.
  4. Stack Heap’e göre daha hızlıdır. Ulaşılmak istenen veriler arka arkaya sıralanmış olur.
  5. Heap ortak olarak kullanılır ve uygulama başlatıldığında başlar.

Bir yanıt yazın

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

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.