Compartilhar via


Memória Órfã

Se o aplicativo distribuído usar um parâmetro de ponteiro [ in, out, unique] ou [in, out, ptr], o lado do servidor do aplicativo poderá alterar o valor do parâmetro de ponteiro para nulo. Quando o servidor retorna posteriormente o valor nulo para o cliente, a memória referenciada pelo ponteiro antes da chamada de procedimento remoto ainda está presente no lado do cliente, mas não está mais acessível a partir desse ponteiro (exceto no caso de um ponteiro completo com alias). Dizem que essa memória é órfã. Isso também é chamado de perda de memória. A órfã repetida de memória no cliente faz com que o cliente fique sem recursos de memória disponíveis.

A memória também pode ficar órfã sempre que o servidor alterar um ponteiro inserido para um valor nulo. Por exemplo, se o parâmetro apontar para uma estrutura de dados complexa, como uma árvore, o lado do servidor do aplicativo poderá excluir nós da árvore e definir ponteiros dentro da árvore como nulos.

Outra situação que pode levar a um vazamento de memória envolve matrizes em conformidade, variáveis e abertas que contêm ponteiros. Quando o aplicativo de servidor modifica o parâmetro que especifica o tamanho da matriz ou o intervalo transmitido para que ele represente um valor menor, os stubs usam os valores menores para liberar memória. Os elementos de matriz com índices maiores que o parâmetro size são órfãos. Seu aplicativo deve liberar elementos fora do intervalo transmitido.