Condividi tramite


Orfano memoria

Se l'applicazione distribuita usa un parametro puntatore [ in, out, unique] o [in, out, ptr], 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 alla procedura remota sia ancora presente sul lato client, ma non è più accessibile da tale puntatore (tranne nel caso di un puntatore completo con alias). Si dice che questa memoria sia orfana. Si tratta anche di una perdita di memoria. L'orfano ripetuto della memoria nel client causa l'interruzione delle risorse di memoria disponibili del client.

La memoria può anche essere 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 implica 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 al di fuori dell'intervallo trasmesso.