Sobes.tech
Junior — Middle

Можете ли да објасните разлику између стека и хипа?

sobes.tech АИ

Одговор од АИ

Stek i hrpa su dva različita područja memorije koja se koriste u C# za skladištenje podataka, i razlikuju se po načinu upravljanja i svrsi.

  • Stek — to je područje memorije gde se čuvaju lokalne promenljive i parametri metoda. Radi po principu LIFO (poslednji ušao, prvi izašao). Memorija na steku se automatski dodeljuje i oslobađa pri ulasku i izlasku iz funkcija, što je veoma brzo. Na steku se čuvaju vrednosti primitivnih tipova i reference na objekte.

  • Heap (hrpa) — to je područje memorije za dinamičku alokaciju objekata. Kada se objekat kreira pomoću new, memorija se dodeljuje na hrpi. Upravljanje memorijom na hrpi vrši Garbage Collector, koji oslobađa neiskorišćene objekte. Hrpa je fleksibilnija, ali operacije dodeljivanja i oslobađanja memorije su sporije nego na steku.

Primer:

void Example()
{
    int x = 10; // x je smešten na steku
    MyClass obj = new MyClass(); // obj je referenca na steku, objekat je na hrpi
}

Ovde je x lokalna promenljiva na steku, a obj je referenca na steku koja ukazuje na objekat na hrpi.