Sobes.tech
Junior

¿Qué es una fuga de memoria y cómo ocurre?

sobes.tech AI

Respuesta de la IA

Una fuga de memoria es una situación en la que un programa asigna memoria para objetos, pero después de que dejan de ser necesarios, las referencias a ellos no se eliminan y el recolector de basura no puede liberar esa memoria. En iOS, donde se utiliza ARC (Contador de Referencias Automático), las fugas de memoria a menudo ocurren debido a referencias cíclicas, por ejemplo, cuando dos objetos se refieren entre sí mediante referencias fuertes, y ninguno de ellos se libera.

Ejemplo de referencia cíclica en Swift:

class A {
    var b: B?
}

class B {
    var a: A?
}

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

a.b = b
b.a = a
// Ambos objetos se refieren entre sí, ARC no puede liberarlos automáticamente

Para evitar fugas, se utilizan referencias débiles (weak) o sin propietario (unowned), que no aumentan el contador de referencias y permiten liberar los objetos correctamente.