Sobes.tech
Junior

Čo je to únik pamäte a ako vzniká?

sobes.tech AI

Odpoveď od AI

Únik pamäte je situácia, keď program alokuje pamäť pre objekty, ale po tom, čo už nie sú potrebné, odkazy na ne nie sú odstránené a zberač odpadu nemôže uvoľniť túto pamäť. V iOS, kde sa používa ARC (Automatické počítanie odkazov), k únikom pamäte často dochádza kvôli cyklickým odkazom, napríklad keď si dva objekty navzájom odkazujú pomocou silných odkazov a žiadny z nich nie je uvoľnený.

Príklad cyklického odkazu vo Swift:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()

a.b = b
b.a = a
// Oba objekty sa odkazujú navzájom, ARC ich nemôže automaticky uvoľniť

Aby sa predišlo únikom, používajú sa slabé (weak) alebo bezvlastnícke (unowned) odkazy, ktoré nezvyšujú čítač odkazov a umožňujú správne uvoľnenie objektov.