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.