Junior — Middle
¿Qué tipos de memoria existen y cómo interactúan entre sí?
sobes.tech AI
Respuesta de la IA
En Go (Golang), los principales tipos de memoria y su interacción son los siguientes:
-
Pila (Stack) — almacena variables locales de funciones. La pila se asigna y libera rápidamente al llamar y regresar de funciones.
-
Montón (Heap) — se usa para asignación dinámica de memoria, por ejemplo, para objetos que viven más allá de la función actual. Go tiene un recolector de basura que gestiona la limpieza del montón.
-
Memoria global/estática — para variables y constantes globales.
Interacción:
- Al llamar a una función, las variables locales se colocan en la pila.
- Si una variable debe vivir más, el compilador puede "moverla" al montón (análisis de escape).
- El recolector de basura libera automáticamente la memoria en el montón cuando los objetos se vuelven inalcanzables.
Ejemplo:
func foo() *int {
x := 10
return &x // x "huye" al montón, ya que se devuelve un puntero
}
Aquí, la variable x será colocada en el montón para que el puntero siga siendo válido después de salir de la función.