Sobes.tech
Junior — Middle

Aké typy únikov pamäte môžu nastať pri správe dynamickej pamäte?

sobes.tech AI

Odpoveď od AI

Pri správe s dynamickou pamäťou môžu nastať nasledujúce typy únikov pamäte:

  • Únik kvôli zabudnutým odkazom: objekty zostávajú v pamäti, pretože na ne stále existujú odkazy, aj keď už nie sú potrebné.
  • Cyklické odkazy: objekty sa odkazujú navzájom a zberač odpadu ich nemôže uvoľniť, ak nepodporuje detekciu cyklov.
  • Neuvoľnené unmanaged zdroje: ak v C# používate unmanaged zdroje (napríklad deskriptory, súbory) a nie sú explicitne uvoľnené cez Dispose alebo finalizátory.

Príklad úniku kvôli cyklu:

class Node {
    public Node Next;
}

Node a = new Node();
Node b = new Node();
a.Next = b;
b.Next = a; // cyklus
// Ak zberač odpadu nepodporuje detekciu cyklov, objekty nebudú uvoľnené

Na prevenciu únikov je dôležité správne spravovať odkazy a uvoľňovať unmanaged zdroje.