Sobes.tech
Junior — Middle

Hogyan változik a verem használata a program futása közben?

sobes.tech MI

Válasz az MI-től

A program futtatása közben a verem a függvényhívásokról, helyi változókról és a végrehajtás irányításáról szóló információkat tárolja.

Amikor egy függvényt hívnak, egy keret (hívási kontextus) kerül a verembe, amely tartalmazza:

  • A visszatérési címet (hova térjen vissza a függvény befejezése után)
  • Helyi változókat
  • A függvény paramétereit

A függvény befejezésekor a keret eltávolításra kerül a veremből.

A Go nyelvben a verem dinamikusan növekszik és csökken szükség szerint, ami hatékony memóriahasználatot tesz lehetővé. Például, rekurzív függvényhívás esetén a verem bővül, és a függvényekből való kilépéskor összehúzódik.

Példa:

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    result := factorial(5)
    fmt.Println(result) // 120
}

Ebben minden factorial hívás új keretet ad a veremhez, amely a függvény visszatérésekor eltávolításra kerül.