Sobes.tech
Junior — Middle

Објасните разлике између управљања меморијом у стеку и у хипу у контексту програмирања.

sobes.tech АИ

Одговор од АИ

U programiranju se memorija obično upravlja na dva glavna načina: stek i hrpa.

Stek — to je područje memorije gdje se pohranjuju lokalne varijable i parametri funkcija. Radi prema principu LIFO (posljednji ulazi, prvi izlazi). Memorija na steku se automatski dodjeljuje i oslobađa pri ulasku i izlasku iz funkcija, što je vrlo brzo i učinkovito. Međutim, veličina steka je ograničena i ne može se pohranjivati velike objekte ili podaci s dinamičkim vremenom trajanja.

Hrpa (Heap) — to je područje memorije za dinamičku alokaciju, gdje se objekti kreiraju i žive dok postoje reference na njih (u Go, sakupljač smeća automatski oslobađa neiskorištenu memoriju). Memorija na hrpi se dodjeljuje i oslobađa ručno ili automatski, što je sporije nego na steku, ali omogućava stvaranje objekata s proizvoljnim vremenom trajanja i većom veličinom.

Primjer u Go:

func primjer() {
    x := 10           // varijabla x se pohranjuje na steku
    p := new(int)     // dodjela memorije na hrpi
    *p = 20
}

Ovdje je x lokalna varijabla na steku, a p pokazuje na memoriju na hrpi.

Ukratko:

  • Stek: brzo dodjeljivanje/osloboditi, ograničena veličina, lokalni podaci.
  • Hrpa: dinamička alokacija, veća veličina, upravljanje vremenom trajanja objekata.