Junior — Middle
Dans quelles situations le compilateur réserve automatiquement de la mémoire dans la zone dynamique (tas) ?
sobes.tech IA
Réponse de l'IA
Dans le compilateur Go, la mémoire sur le tas est automatiquement allouée dans les situations suivantes :
- Lorsqu'une variable doit vivre plus longtemps que la durée d'exécution de la fonction dans laquelle elle est déclarée (analyse d'échappement). Par exemple, si l'adresse d'une variable locale est renvoyée depuis une fonction ou stockée dans une structure qui vit plus longtemps.
- Si la variable est trop grande pour la pile ou si sa taille est inconnue lors de la compilation.
Exemple :
func create() *int {
x := 10
return &x // la variable x "échappe" au tas, car un pointeur est renvoyé
}
Ici, la variable x sera placée sur le tas pour que le pointeur reste valide après la sortie de la fonction. Le compilateur analyse le code (analyse d'échappement) et décide où allouer la mémoire.