Yığın ve heap belleği arasındaki farkı açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Stack ve yığın, C#'ta veri depolamak için kullanılan iki farklı bellek alanıdır ve yönetim şekilleri ile amaçları bakımından farklılık gösterirler.
-
Stack (Yığın) — yerel değişkenlerin ve metod parametrelerinin saklandığı bellek alanıdır. LIFO (son giren ilk çıkar) prensibiyle çalışır. Stack'teki bellek, fonksiyonlara giriş ve çıkış sırasında otomatik olarak tahsis edilir ve serbest bırakılır, bu oldukça hızlıdır. Stack'te temel tip değerleri ve nesne referansları saklanır.
-
Heap (Yığın) — nesnelerin dinamik olarak tahsis edildiği bellek alanıdır. Bir nesne
newanahtar kelimesiyle oluşturulduğunda, bellek heap'te tahsis edilir. Heap'teki bellek yönetimi, kullanılmayan nesneleri serbest bırakan Çöp Toplayıcı (Garbage Collector) tarafından yapılır. Heap daha esnektir, ancak tahsis ve serbest bırakma işlemleri stack'e göre daha yavaştır.
Örnek:
void Example()
{
int x = 10; // x stack'te saklanır
MyClass obj = new MyClass(); // obj stack'te bir referanstır, nesne heap'tedir
}
Burada, x stack'te yerel bir değişkendir ve obj stack'te bir referanstır, nesne ise heap'tedir.