Sobes.tech
Junior — Middle

Mikor mondhatjuk, hogy egy objektum vagy szerkezet nincs a memória veremben?

sobes.tech MI

Válasz az MI-től

Egy objektum vagy szerkezet nem a memória veremben (stack) helyezkedik el, ha dinamikusan foglalják le vagy olyan hosszú életű, hogy meghaladja a függvény végrehajtási idejét.

iOS-ben (és általában Swift/Objective-C-ben):

  • A helyi változók és szerkezetek általában a veremben (stack) helyezkednek el.
  • A osztályobjektumok (referenciatípusok) a heap-en (kupac) vannak lefoglalva, és a veremben csak egy hivatkozás tárolódik rájuk.
  • Ha egy objektumot alloc/init-tel Objective-C-ben vagy class-szal Swift-ben hoznak létre, akkor a heap-en helyezkedik el.

Swift példával:

func példa() {
    let helyiSzerkezet = MyStruct() // a veremben
    let objektum = MyClass()        // az objektum a heap-en, a hivatkozás a veremben
}

Tehát, ha egy változó egy osztályobjektumra mutató hivatkozás, akkor maga az objektum kívül van a veremben, a heap-en.