C# Eğitimleri – Stack & Heap Kavramları

C# Eğitimleri kapsamında bir önceki yazımda anlattığım değer ve referans tipli değişkenler içinde kısaca değindiğim Stack ve Heap kavramlarına bu yazımda daha detaylı bir bakış atacağız.

C# Eğitimleri 24 – Değer & Referans Tipleri – Value & Reference Types

C# yada herhangi bir programlama dilinde yazdığımız kodlar bellekte bir yer kaplayacaktır.

Biraz olayın üzerine düşünerek ilerliyor gibi yazmakta fayda var.

İlk adım programı kodladınız. Bir tane küçük bir program kodlayalım hemen.

 

 

Adım adım gidersek. int türünün kapladığı alan belirlidir. Bunun için ramde 4 byte lık yer ayrılır.

Dizi değişkeninde belirli boyutta ve türü verilmiştir. Buda değerleri bilindiği için Stack alanda saklanacaktır.

Peki DataTable için nasıl bir boyut belirlemesi yapılabilir?

İşte tamda burada Stack ve Heap kavramları karşımıza çıkar.

Şunu demişler boyut değerini bildiğimiz değişkenleri Ram’in Stack alanından tutalım. Ama belirsiz olan referans tipli değişkenleride Heap de tutalım.

Stack ve Heap programlama yaparken Ram üzerinde kullandığımız iki alandır.

Stack alanı Heap alanına göre daha az boyutludur. Çünkü Heap alana boyutu belirsiz değişkenler gelmektedir.

C# da Ramdeki bu iki alana doğrudan müdahale yoktur. Programlama içinde belirlenen kurallar dahilinde ilgili değişkenler ilgili alanlara yazılır.

C# teknolojisi olan Garbege Collector ile Ram üzerinde işi biten değer silinir. Bu işlemde C# runner ı tarafından gerçekleştirilir.

Stack Özellikleri

Stack alan kullanımı kolay ve erişimi hızlıdır.

Boyut değerleri sınırlıdır. Yani yukarıda 20 uzunlukta tanımladığım değişkene 21. değeri atamaya çalışırsam buna izin vermeyecek geriye hata dönecektir.

Derleme zamanında oluşturulur.

Eğer bir değişkene atanacak değeri net olarak biliyorsak burada değer tipli değişken kullanarak Stackde saklanmasını sağlamak tavsiye edilendir.

Heap Özellikleri

Stack alana göre erişimi yavaştır.

Eğer doğru bir şekilde kullanmazsak bellek sorunlarımızın ortaya çıkması çok muhtemeldir.

İhtiyacınız olan alanı yada değeri tam olarak bilmiyorsanız referans tipli bir değişken kullanıp bunun heap alanından saklanmasını sağlamalısınız.

İşte Stack Ve Heap alanları böyleydi. Bir sonraki yazımda görüşmek üzere.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/