Sobes.tech
Junior — Middle

Que tipos de vazamentos de memória podem ocorrer na gestão de memória dinâmica?

sobes.tech IA

Resposta da IA

Na gestão de memória dinâmica podem ocorrer os seguintes tipos de fugas de memória:

  • Fuga devido a referências esquecidas: objetos permanecem na memória porque ainda há referências a eles, embora já não sejam necessários.
  • Referências cíclicas: objetos referenciam-se mutuamente, e o coletor de lixo não consegue libertá-los se não suportar a deteção de ciclos.
  • Recursos unmanaged não libertados: se em C# forem utilizados recursos unmanaged (por exemplo, descritores, ficheiros), e estes não forem libertados explicitamente através de Dispose ou finalizadores.

Exemplo de fuga devido a um ciclo:

class Node {
    public Node Next;
}

Node a = new Node();
Node b = new Node();
a.Next = b;
b.Next = a; // ciclo
// Se o coletor de lixo não suportar a deteção de ciclos, os objetos não serão libertados

Para evitar fugas, é importante gerir corretamente as referências e libertar os recursos unmanaged.