Sobes.tech
Junior

Co znamená, že odkazy jsou uloženy na zásobníku?

sobes.tech AI

Odpověď od AI

Lokální proměnné hodnot (typy Int, Bool, Double, String, Struct, Enum), vytvořené uvnitř funkce, jsou uloženy na zásobníku. Zásobník je oblast paměti používaná pro místní proměnné, parametry funkcí a adresy návratů. Funguje podle principu LIFO (Last In, First Out).

Princip fungování:

  1. Umístění: Když je funkce volána, je vytvořen zásobníkový rámec. Místní proměnné hodnot této funkce jsou umístěny v tomto rámci.
  2. Přístup: Přístup k proměnným na zásobníku je velmi rychlý, protože jejich adresy jsou určeny vzhledem k ukazateli zásobníku.
  3. Uvolnění: Když funkce dokončí svůj běh, její zásobníkový rámec (a všechny v něm uložené proměnné) je jednoduše odstraněn z vrcholu zásobníku.

Příklad:

func processNumbers() {
    var number1: Int = 10 // number1 je uložen na zásobníku
    let number2: Double = 20.5 // number2 je uložen na zásobníku
    
    // ... použití number1 a number2
} // Při opuštění funkce processNumbers jsou number1 a number2 odstraněny ze zásobníku

Na rozdíl od referenčních typů (Class, Actor), jejichž instance jsou uloženy na haldě, je odkaz na tuto instanci uložen na zásobníku.