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.
newyordamida 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.