Sobes.tech
Junior — Middle

Koje vrste memorije postoje i kako međusobno komuniciraju?

sobes.tech АИ

Одговор од АИ

U Go (Golang), glavni tipovi memorije i njihova interakcija su sledeći:

  • Stek (Stack) — čuva lokalne promenljive funkcija. Stek se brzo dodeljuje i oslobađa pri pozivu i povratku iz funkcija.

  • Heap (Heap) — koristi se za dinamičku alokaciju memorije, na primer, za objekte koji žive duže od trenutne funkcije. Go ima sakupljač smeća koji upravlja čišćenjem heap-a.

  • Globalna/staticka memorija — za globalne promenljive i konstante.

Interakcija:

  • Pri pozivu funkcije, lokalne promenljive se smeštaju na stek.
  • Ako promenljiva treba da živi duže, kompajler može "prebaciti" je u heap (escape analysis).
  • Sakupljač smeća automatski oslobađa memoriju u heap-u kada objekti postanu nedostupni.

Primer:

func foo() *int {
    x := 10
    return &x // x "beži" u heap, jer se vraća pokazivač
}

Ovde će promenljiva x biti smeštena u heap, kako bi pokazivač ostao validan nakon izlaska iz funkcije.