メモリの孤立

分散アプリケーション で [inoutunique] または [in, out, ptr] ポインター パラメーターを使用している場合、アプリケーションのサーバー側でポインター パラメーターの値を null に変更できます。 その後、サーバーがクライアントに null 値を返す場合、リモート プロシージャ呼び出しの前にポインターによって参照されるメモリはクライアント側に残りますが、そのポインターからはアクセスできなくなります (エイリアス化された完全ポインターの場合を除く)。 このメモリは 孤立しているといいます。 これは メモリ リークとも呼ばれます。 クライアントでメモリを繰り返し孤立すると、クライアントは使用可能なメモリ リソースを使い果たします。

サーバーが埋め込みポインターを null 値に変更するたびに、メモリを孤立することもできます。 たとえば、 パラメーターがツリーなどの複雑なデータ構造を指している場合、アプリケーションのサーバー側でツリーのノードを削除し、ツリー内のポインターを null に設定できます。

メモリ リークを引き起こすことができるもう 1 つの状況には、ポインターを含む一致する配列、変化する配列、および開いている配列が含まれます。 サーバー アプリケーションが、配列サイズまたは送信範囲を指定するパラメーターを変更して小さい値を表す場合、スタブは小さい値を使用してメモリを解放します。 size パラメーターより大きいインデックスを持つ配列要素は孤立しています。 アプリケーションは、送信される範囲外の要素を解放する必要があります。