Junior
Ի՞նչ է նշանակում, որ հղումները պահվում են ստեկում։
sobes.tech AI
Պատասխան AI-ից
Տեղական արժեքային փոփոխականները (տիպեր Int, Bool, Double, String, Struct, Enum), որոնք ստեղծվում են ֆունկցիայի ներսում, պահվում են ստեկում։ Ստեկը հիշողության տարածք է, որը օգտագործվում է տեղական փոփոխականների, ֆունկցիայի պարամետրերի և վերադարձի հասցեների համար։ Այն աշխատում է LIFO (Last In, First Out) սկզբունքով։
Աշխատելու սկզբունքը՝
- Տեղադրում՝ երբ ֆունկցիա է կանչվում, ստեղծվում է ստեկային շրջանակ։ Այս ֆունկցիայի տեղական արժեքային փոփոխականները տեղադրվում են այդ շրջանակում։
- Մուտք՝ ստեկի վրա փոփոխականներին մուտք գործելը շատ արագ է, քանի որ նրանց հասցեները որոշվում են ստեկային ցուցիչի հարաբերությամբ։
- Հանել՝ երբ ֆունկցիան ավարտում է իր գործարկումը, նրա ստեկային շրջանակը (և բոլոր այնտեղ պահվող փոփոխականները) պարզապես հեռացվում են ստեկի վերևից։
Օրինակ՝
func processNumbers() {
var number1: Int = 10 // number1 պահվում է ստեկում
let number2: Double = 20.5 // number2 պահվում է ստեկում
// ... օգտագործում number1 և number2
} // processNumbers ֆունկցիայից դուրս գալու ժամանակ, number1 և number2 հեռացվում են ստեկից
Տվյալների տեսակների (Class, Actor) հետ տարբերությամբ, որոնց օրինակները պահվում են heap-ում, իսկ այս օրինակին հղումը պահվում է ստեկում։