Sobes.tech
Junior

Ce este o scurgere de memorie și cum apare?

sobes.tech AI

Răspuns de la AI

O scurgere de memorie este o situație în care un program alocă memorie pentru obiecte, dar după ce acestea nu mai sunt necesare, referințele către ele nu sunt eliminate, iar colectorul de gunoi nu poate elibera acea memorie. În iOS, unde se utilizează ARC (Numărarea Automată a Referințelor), scurgerile de memorie apar adesea din cauza referințelor ciclice, de exemplu, atunci când două obiecte se referă reciproc prin referințe puternice, și niciunul nu este eliberat.

Exemplu de referință ciclică în Swift:

class A {
    var b: B?
}

class B {
    var a: A?
}

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

a.b = b
b.a = a
// Ambele obiecte se referă reciproc, ARC nu le poate elibera automat

Pentru a evita scurgerile, se folosesc referințe slabe (weak) sau fără deținere (unowned), care nu cresc contorul de referințe și permit eliberarea corectă a obiectelor.