Sobes.tech
Junior — Middle

Quels sont les types de mémoire existants et comment interagissent-ils entre eux?

sobes.tech IA

Réponse de l'IA

En Go (Golang), les principaux types de mémoire et leur interaction sont les suivants :

  • Pile (Stack) — stocke les variables locales des fonctions. La pile est rapidement allouée et libérée lors de l'appel et du retour des fonctions.

  • Tas (Heap) — utilisé pour l'allocation dynamique de mémoire, par exemple pour des objets qui vivent plus longtemps que la fonction en cours. Go possède un ramasse-miettes qui gère le nettoyage du tas.

  • Mémoire globale/statique — pour les variables et constantes globales.

Interaction :

  • Lors de l'appel d'une fonction, les variables locales sont placées dans la pile.
  • Si une variable doit vivre plus longtemps, le compilateur peut la "déplacer" dans le tas (analyse d'échappement).
  • Le ramasse-miettes libère automatiquement la mémoire du tas lorsque les objets deviennent inaccessibles.

Exemple :

func foo() *int {
    x := 10
    return &x // x "fuit" dans le tas, car un pointeur est renvoyé
}

Ici, la variable x sera placée dans le tas pour que le pointeur reste valide après la sortie de la fonction.