Sobes.tech
Junior — Middle

Můžete vysvětlit rozdíl mezi zásobníkem a haldou?

sobes.tech AI

Odpověď od AI

Zásobník a halda jsou dva různé oblasti paměti používané v C# pro ukládání dat a liší se způsobem správy a účelem.

  • Zásobník (Stack) — je oblast paměti, kde jsou uloženy místní proměnné a parametry metod. Funguje podle principu LIFO (poslední dovnitř, první ven). Paměť na zásobníku je přiřazena a uvolněna automaticky při vstupu a výstupu z funkcí, což je velmi rychlé. Na zásobníku jsou uloženy hodnoty primitivních typů a odkazy na objekty.

  • Heap (halda) — je oblast paměti pro dynamické přiřazování objektů. Když je objekt vytvořen pomocí new, paměť je přiřazena na haldě. Správa paměti na haldě je prováděna garbage collectorem, který uvolňuje nepoužívané objekty. Haldy je flexibilnější, ale operace přiřazení a uvolnění jsou pomalejší než na zásobníku.

Příklad:

void Example()
{
    int x = 10; // x je uložen na zásobníku
    MyClass obj = new MyClass(); // obj je odkaz na zásobníku, objekt je na haldě
}

Zde je x místní proměnná na zásobníku, a obj je odkaz na zásobníku směřující na objekt na haldě.