DEV Community

Cover image for Stack va Heap: Umumiy Tasavvur
islomAli99
islomAli99

Posted on

Stack va Heap: Umumiy Tasavvur

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:

  1. LIFO (Last In, First Out) tamoyili bo‘yicha ishlaydi.
  2. Bu degani, oxirgi qo‘shilgan ma’lumot birinchi bo‘lib o‘chiriladi.
  3. Statik o‘lcham: Dastur ishga tushirilganda stek o‘lchami belgilab qo‘yiladi va u o‘zgarishi mumkin emas.
  4. Tezkor: Stekdan ma’lumot olish va yozish juda tez amalga oshiriladi, chunki u faqat bitta oxirgi nuqtadan kirish va chiqishni ta’minlaydi.
  5. Funksiya chaqiruvlari va mahalliy o‘zgaruvchilar: Funksiya chaqiruvlari va ularga tegishli mahalliy o‘zgaruvchilar stekda saqlanadi.

Ishlash Tizimi:

  1. Funksiya chaqirilganda, uning parametr va mahalliy o‘zgaruvchilari stekka qo‘shiladi.
  2. 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:

  1. Dinamik o‘lcham: Xipda xotira dastur ishlashi davomida kerakli hajmda ajratilishi va bo‘shatilishi mumkin.
  2. Tezkor emas: Xotira ajratish va bo‘shatish jarayonlari stekdan sekinroq, chunki murakkab xotira boshqarish talab qilinadi.
  3. Katta va kompleks ma’lumotlar: Katta ma’lumotlar va dinamik strukturalar (masalan, massivlar, obyektlar) xipda saqlanadi.

Ishlash Tizimi:

  1. Xotira ajratishda dasturchi yoki garbage collector (axlat tozalovchi) tomonidan nazorat qilinadi.
  2. Xotira ajratish uchun malloc, new kabi funksiyalar yoki operatorlar ishlatiladi.
  3. 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

Image description

Stack Misoli:

void MyFunction()
{
    int x = 10; // Mahalliy o‘zgaruvchi stekda saqlanadi
    int y = 20;
}

Enter fullscreen mode Exit fullscreen mode

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;
}

Enter fullscreen mode Exit fullscreen mode

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.

Image description

Top comments (0)