Junior
Čo znamená, že odkazy sa ukladajú na zásobník?
sobes.tech AI
Odpoveď od AI
Lokálne premenné hodnoty (typy Int, Bool, Double, String, Struct, Enum), vytvorené vo vnútri funkcie, sa ukladajú na zásobník. Zásobník je oblasť pamäte používaná na lokálne premenné, parametre funkcií a adresy návratov. Funguje podľa princípu LIFO (Last In, First Out).
Princíp fungovania:
- Umiestnenie: Keď je funkcia volaná, vytvorí sa zásobníkový rámec. Lokálne premenné hodnoty tejto funkcie sa umiestnia do tohto rámca.
- Prístup: Prístup k premenným na zásobníku je veľmi rýchly, pretože ich adresy sú určené vzhľadom na ukazovateľ zásobníka.
- Uvoľnenie: Keď funkcia ukončí svoju exekúciu, jej zásobníkový rámec (a všetky v ňom uložené premenné) sa jednoducho odstráni z vrchu zásobníka.
Príklad:
func processNumbers() {
var number1: Int = 10 // number1 sa ukladá na zásobník
let number2: Double = 20.5 // number2 sa ukladá na zásobník
// ... použitie number1 a number2
} // Pri opustení funkcie processNumbers sa number1 a number2 odstránia zo zásobníka
Na rozdiel od referenčných typov (Class, Actor), ktorých inštancie sa ukladajú na halde, referencia na túto inštanciu sa ukladá na zásobník.