Sobes.tech
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ų