Condividi tramite


Orfanizzazione della memoria

Se l'applicazione distribuita usa un [in, out, univoco] o [in, out, ptr] parametro puntatore, il lato server dell'applicazione può modificare il valore del parametro puntatore su Null. Quando il server restituisce successivamente il valore Null al client, la memoria a cui fa riferimento il puntatore prima che la chiamata di routine remota sia ancora presente sul lato client, ma non è più accessibile da tale puntatore (tranne nel caso di un puntatore completo con alias). È detto che questa memoria sia orfana. Questo è anche chiamato una perdita di memoria . Il ripetuto abbandono della memoria sul client porta all'esaurimento delle risorse di memoria disponibili.

La memoria può anche diventare orfana ogni volta che il server modifica un puntatore incorporato a un valore null. Ad esempio, se il parametro punta a una struttura di dati complessa, ad esempio un albero, il lato server dell'applicazione può eliminare i nodi dell'albero e impostare puntatori all'interno dell'albero su Null.

Un'altra situazione che può causare una perdita di memoria comporta matrici conformi, variabili e aperte contenenti puntatori. Quando l'applicazione server modifica il parametro che specifica le dimensioni della matrice o l'intervallo trasmesso in modo che rappresenti un valore più piccolo, gli stub usano i valori più piccoli per liberare memoria. Gli elementi della matrice con indici maggiori del parametro size sono orfani. L'applicazione deve liberare elementi esterni all'intervallo trasmesso.