Junior — Middle
Millal saab öelda, et objekt või struktuur ei asu mälu virnas?
sobes.tech AI
Vastus AI-lt
Objekt või struktuur ei asu mälu virnas (stack), kui see on dünaamiliselt eraldatud või omab pikka eluea aega, mis ületab funktsiooni täitmise aja.
iOS-is (ja üldiselt Swift/Objective-C-s):
- Kohalikud muutujad ja struktuurid paiknevad tavaliselt virnas.
- Klasside objektid (viidatüübid) eraldatakse virnas (heap), ja virnas hoitakse ainult viidet neile.
- Kui objekt luuakse
alloc/initabil Objective-C-s võiclassabil Swift-s, siis see paikneb virnas.
Näide Swift-s:
func näide() {
kohalikStruktuur = MyStruct() // virnas
objekt = MyClass() // virnas, viide virnas
}
Seega, kui muutuja on viide klassi objekti, asub objekt ise väljaspool virna, virnas.