Sobes.tech
Junior — Middle

U kojim situacijama kompajler automatski rezerviše memoriju u dinamičkoj oblasti (heap)?

sobes.tech АИ

Одговор од АИ

U Go kompilatoru, memorija na hrpi (heap) se automatski dodeljuje u sledećim situacijama:

  • Kada promenljiva treba da živi duže od vremena izvršenja funkcije u kojoj je deklarisana (analiza bekstva). Na primer, ako se adresa lokalne promenljive vraća iz funkcije ili se čuva u strukturi koja traje duže.
  • Ako je promenljiva prevelika za stek ili njen veličina nije poznata tokom kompilacije.

Primer:

func create() *int {
    x := 10
    return &x // promenljiva x "beži" na hrpu, jer se vraća pokazivač
}

Ovde će promenljiva x biti smeštena na hrpi, kako bi pokazivač ostao validan nakon izlaska iz funkcije. Kompilator analizira kod (analiza bekstva) i odlučuje gde da dodeli memoriju.