Sobes.tech
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.