Sobes.tech
Junior

Yadda yaddaşda yığın və yığım istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Yığım, yerli dəyişənləri, funksiyaların parametrlərini və geri dönüş ünvanlarını saxlamaq üçün istifadə olunur. Yaddaş avtomatik olaraq LIFO (Last-In, First-Out) prinsipi ilə ayrılır və azad edilir.

Yığım (Heap), tərtib zamanı məlum olmayan və ya yaradıldıqdan sonra ömrü bitən obyektlər üçün dinamik yaddaş ayırmaq üçün istifadə olunur. Yaddaşın idarə olunması əl ilə və ya yaddaş idarəetmə mexanizmləri (Swift-də ARC, digər dillərdə çöp toplayıcı) vasitəsilə həyata keçirilir.

Xüsusiyyət Yığım (Stack) Yığım (Heap)
Ayırma Avtomatik Dinamik (əl ilə və ya MRC/ARC ilə)
Azad etmə Scope-dan çıxarkən avtomatik Əl ilə (free) və ya MRC/ARC ilə
Məlumatların ölçüsü Tərtib zamanı məlum olur İcra zamanı məlum olmaya bilər
Əlçatanlıq Sürətli, ardıcıl Daha yavaş, təsadüfi
Struktura LIFO Obyekt qrafı
Nümunələr Yerli dəyişənlər, funksiyaların parametrləri Sinif obyektləri, dəyişkən ölçülü strukturlar
// Swift-də yığım və yığım (heap) istifadəsi nümunəsi

func myFunction() {
    // Yığımda yerli dəyişən
    var stackVariable: Int = 10

    // Yığımda sinif obyekti
    let heapObject = MyClass()

    // Qiymət tipi yığında (referans tiplərini ehtiva etməyən strukturlar istisna olmaqla)
    var stackStruct = MyStruct()

    // Referans tiplərini ehtiva edən struktur, bir hissəsi yığımda ola bilər
    var mixedStruct = MyMixedStruct()
}

class MyClass {
    // Obyektin xüsusiyyətləri yığımda saxlanılır
    var property: String = "Hello"
}

struct MyStruct {
    // Qiymət tipi xüsusiyyətləri yığında saxlanılır
    var property: Int = 20
}

class MyReferenceType {
    var value: Int = 30
}

struct MyMixedStruct {
    // Yığımda qiymət tipi
    var stackProperty: Int = 40
    // Yığımda referans tipi (öz referansı yığında)
    var heapReference: MyReferenceType = MyReferenceType()
}