Stack va Heap: Umumiy Tasavvur
Stack
va Heap
xotirani boshqarish va dasturlashda muhim tushunchalar bo‘lib, har ikkalasi ham operativ xotira (RAM)da joylashadi, lekin ularning ishlash mexanizmlari va foydalanish maqsadlari farqlanadi.
Stack (Stek)
Xususiyatlari:
- LIFO (Last In, First Out) tamoyili bo‘yicha ishlaydi.
- Bu degani, oxirgi qo‘shilgan ma’lumot birinchi bo‘lib o‘chiriladi.
- Statik o‘lcham: Dastur ishga tushirilganda stek o‘lchami belgilab qo‘yiladi va u o‘zgarishi mumkin emas.
- Tezkor: Stekdan ma’lumot olish va yozish juda tez amalga oshiriladi, chunki u faqat bitta oxirgi nuqtadan kirish va chiqishni ta’minlaydi.
- Funksiya chaqiruvlari va mahalliy o‘zgaruvchilar: Funksiya chaqiruvlari va ularga tegishli mahalliy o‘zgaruvchilar stekda saqlanadi.
Ishlash Tizimi:
- Funksiya chaqirilganda, uning parametr va mahalliy o‘zgaruvchilari stekka qo‘shiladi.
- Funksiya tugagach, stekdan bu ma’lumotlar olib tashlanadi.
Afzalliklari:
Tez ishlash.
Xotira ajratish va bo‘shatish avtomatik tarzda amalga oshiriladi.
Kamchiliklari:
O‘lchami cheklangan.
Katta ma’lumotlar yoki dinamik ma’lumotlar strukturalari uchun mos emas.
Heap (Xip)
Xususiyatlari:
- Dinamik o‘lcham: Xipda xotira dastur ishlashi davomida kerakli hajmda ajratilishi va bo‘shatilishi mumkin.
- Tezkor emas: Xotira ajratish va bo‘shatish jarayonlari stekdan sekinroq, chunki murakkab xotira boshqarish talab qilinadi.
- Katta va kompleks ma’lumotlar: Katta ma’lumotlar va dinamik strukturalar (masalan, massivlar, obyektlar) xipda saqlanadi.
Ishlash Tizimi:
- Xotira ajratishda dasturchi yoki garbage collector (axlat tozalovchi) tomonidan nazorat qilinadi.
- Xotira ajratish uchun malloc, new kabi funksiyalar yoki operatorlar ishlatiladi.
- Ajratilgan xotirani bo‘shatish uchun free, delete kabi funksiyalar yoki operatorlar ishlatiladi.
Afzalliklari:
Xotira hajmi dasturga moslashadi.
Katta hajmdagi ma’lumotlarni saqlash va ularga kirish imkonini beradi.
Kamchiliklari:
Xotira ajratish va bo‘shatish jarayonlari sekinroq.
Xotira bo‘shatishni unutish natijasida xotira sizib chiqishi (memory leak) muammosi kelib chiqishi mumkin.
Stack va Heap: Taqqoslash
Stack Misoli:
void MyFunction()
{
int x = 10; // Mahalliy o‘zgaruvchi stekda saqlanadi
int y = 20;
}
Heap Misoli
class MyClass
{
public int a;
public int b;
}
void MyFunction()
{
MyClass obj = new MyClass(); // Obyekt xipda saqlanadi
obj.a = 10;
obj.b = 20;
}
Stack va Heap xotira boshqarishda muhim rol o‘ynaydi va ularning o‘ziga xos xususiyatlari va cheklovlari bor. Dasturchilar uchun ushbu tushunchalarni yaxshi bilish dastur samaradorligini oshirish va xotira boshqarishda xatolardan qochishga yordam beradi.
Top comments (0)