Sobes.tech
Junior

Qu'est-ce qu'une fuite de mémoire et comment se produit-elle?

sobes.tech IA

Réponse de l'IA

Une fuite de mémoire est une situation où un programme alloue de la mémoire pour des objets, mais après qu'ils ne sont plus nécessaires, les références à eux ne sont pas supprimées, et le ramasse-miettes ne peut pas libérer cette mémoire. Sur iOS, où ARC (Automatic Reference Counting) est utilisé, les fuites de mémoire surviennent souvent en raison de références cycliques, par exemple lorsque deux objets se réfèrent mutuellement via des références fortes, et aucun d'eux n'est libéré.

Exemple de référence cyclique en Swift :

class A {
    var b: B?
}

class B {
    var a: A?
}

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

a.b = b
b.a = a
// Les deux objets se réfèrent mutuellement, ARC ne peut pas les libérer automatiquement

Pour éviter les fuites, on utilise des références faibles (weak) ou sans propriétaire (unowned), qui n'augmentent pas le compteur de références et permettent de libérer correctement les objets.