Junior — Middle
Kaip organizuota atminties struktūra duomenų saugojimui programoje?
sobes.tech AI
Atsakymas iš AI
iOS, programos duomenų saugojimo atminties struktūra paprastai yra organizuota taip:
- Eilė (Stack): saugo vietinius kintamuosius ir funkcijų iškvietimus. Greitas atminties paskirstymas ir laisvavimas.
- Aukštyn (Heap): dinamiškas atminties paskirstymas objektams ir struktūroms, kurios gyvena ilgiau nei funkcijos iškvietimas.
- Duomenų segmentas: statiniams ir globaliems kintamiesiems.
- Kodo segmentas: programos mašininio kodo.
Pavyzdžiui, kai kuriate klasės objektą Swift ar Objective-C, atmintis jam skiriama aukštyn, o nuoroda į objektą saugoma eilėje. Automatinė atminties valdymas iOS vykdomas ARC (Automatic Reference Counting) būdu, kuris stebi nuorodų skaičių į objektus ir laisvina atmintį, kai ji nebėra reikalinga.
Pavyzdys:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
func createPerson() {
let person = Person(name: "Ivan") // objektas aukštyn, nuoroda eilėje
print(person.name)
} // po funkcijos pabaigos nuoroda išnyksta, ARC laisvina objektą, jei nėra kitų nuorodų