Sobes.tech
Junior — Middle

Yığın və yığım yaddaşı arasındakı fərqi izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Stack və yığın, C#-da məlumatların saxlanması üçün istifadə olunan iki fərqli yaddaş sahəsidir və idarəetmə və məqsəd baxımından fərqlənirlər.

  • Stack — yerli dəyişənlərin və metod parametrlərinin saxlandığı yaddaş sahəsidir. LIFO (son daxil olan, ilk çıxarılır) prinsipinə əsaslanır. Stack-də yaddaş avtomatik olaraq funksiyalara giriş və çıxış zamanı ayrılır və azad edilir, bu çox sürətlidir. Stack-də primitiv tiplər və obyektlərə istinadlar saxlanılır.

  • Heap (Yığın) — obyektlərin dinamik olaraq ayrıldığı yaddaş sahəsidir. new ilə obyekt yaradıldıqda, yaddaş heap-də ayrılır. Heap-də yaddaş idarəetməsi Garbage Collector (Tullantı Toplayıcı) tərəfindən həyata keçirilir, istifadə olunmayan obyektlər azad edilir. Heap daha çevikdir, amma ayırma və azad etmə əməliyyatları stack-ə nisbətən daha yavaşdır.

Nümunə:

void Example()
{
    int x = 10; // x stack-də saxlanılır
    MyClass obj = new MyClass(); // obj stack-də istinad, obyekt heap-də
}

Burada, x yerli dəyişəndir və stack-də saxlanır, obj isə stack-də istinad edir və obyekt heap-də yerləşir.