Junior — Middle
Kuidas on organiseeritud mälu struktuur andmete salvestamiseks programmis?
sobes.tech AI
Vastus AI-lt
iOS-is on tavapärane mälu struktuur andmete salvestamiseks programmis organiseeritud järgmiselt:
- Ketas (Stack): salvestab kohalikud muutujad ja funktsioonikutsed. Kiire mälu eraldamine ja vabastamine.
- Hunnik (Heap): dünaamiline mälu eraldamine objektidele ja struktuuridele, mis elavad kauem kui funktsioonikutsed.
- Andmesegment: statiliste ja globaalsete muutujate jaoks.
- Koodisegment: programmi masinkoodile.
Näiteks, kui loote klassi objekti Swift või Objective-C-s, eraldatakse selle jaoks mälu hunnikul, ja viide objekti juurde hoitakse ketas. Automaatne mälu haldus iOS-is toimub ARC (Automatic Reference Counting) kaudu, mis jälgib viidete arvu objektidele ja vabastab mälu, kui see enam ei ole vajalik.
Näide:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
func createPerson() {
let person = Person(name: "Ivan") // objekt hunnikul, viide ketas
print(person.name)
} // funktsioonist väljudes eemaldatakse viide, ARC vabastab objekti, kui teised viited puuduvad