Sobes.tech
Junior — Middle

Stack va heap xotira orasidagi farqni tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Stack va yığın, C# da ma'lumotlarni saqlash uchun ishlatiladigan ikki xil xotira hududidir va ular boshqarish usuli va maqsadiga ko'ra farqlanadi.

  • Stack (Yig'ish) — bu yerda lokal o'zgaruvchilar va metod parametrlar saqlanadi. U LIFO (so'ng kirgan, birinchi chiqadi) tamoyili bo'yicha ishlaydi. Stack ichidagi xotira funksiyaga kirish va chiqishda avtomatik ravishda ajratiladi va bo'shatiladi, bu juda tez. Stackda primitiv turlar va obyektlarga havolalar saqlanadi.

  • Heap (Yig'ish) — bu obyektlarni dinamik ravishda ajratish uchun xotira hududi. new yordamida obyekt yaratilganda, xotira heapda ajratiladi. Heapdagi xotira boshqaruvi Garbage Collector (Axlat to'plovchi) tomonidan amalga oshiriladi, u foydalanilmayotgan obyektlarni bo'shatadi. Heap ko'proq moslashuvchan, lekin ajratish va bo'shatish operatsiyalari stackga qaraganda sekinroq.

Misol:

void Example()
{
    int x = 10; // x stackda saqlanadi
    MyClass obj = new MyClass(); // obj stackda havola, obyekt heapda
}

Bu yerda, x stackdagi lokal o'zgaruvchi, obj esa stackdagi havola bo'lib, obyekt heapda joylashgan.