Sobes.tech
Junior

Šta znači da se linkovi čuvaju na steku?

sobes.tech АИ

Одговор од АИ

Lokalne promenljive vrednosti (tipovi Int, Bool, Double, String, Struct, Enum), kreirane unutar funkcije, se čuvaju na steku. Stek je oblast memorije koja se koristi za lokalne promenljive, parametre funkcija i adrese povratka. Radi po principu LIFO (Last In, First Out).

Princip rada:

  1. Postavljanje: Kada se pozove funkcija, kreira se stek okvir. Lokalni promenljivi vrednosti te funkcije se smeštaju u taj okvir.
  2. Pristup: Pristup promenljivima na steku je veoma brz, jer se njihove adrese određuju u odnosu na pokazivač steka.
  3. Oslobađanje: Kada funkcija završi sa izvršavanjem, njen stek okvir (i sve promenljive u njemu) se jednostavno uklanjaju sa vrha steka.

Primer:

func processNumbers() {
    var number1: Int = 10 // number1 se čuva na steku
    let number2: Double = 20.5 // number2 se čuva na steku
    
    // ... korišćenje number1 i number2
} // Pri izlasku iz funkcije processNumbers, number1 i number2 se uklanjaju sa steka

Za razliku od referentnih tipova (Class, Actor), čiji se primerci čuvaju na hrpi, referenca na taj primerak se čuva na steku.