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
Disposealebo 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.