パラメーターに適用される方向属性

方向属性 [ in] と [ out] によって、クライアントとサーバーがメモリを割り当てて解放する方法が決まります。 次の表は、方向属性がメモリ割り当てに及ぼす影響をまとめたものです。

Directional 属性 クライアント上のメモリ サーバー上のメモリ
[ in] クライアント アプリケーションは、呼び出しの前に割り当てる必要があります。 サーバー スタブによって割り当てられます。
[ out] クライアント スタブは、返却時に割り当てます。 サーバー スタブは最上位ポインターのみを割り当てます。サーバー アプリケーションは、すべての埋め込みポインターを割り当てる必要があります。 サーバーでは、必要に応じて新しいデータも割り当てられます。
[入力出力] クライアント アプリケーションは、サーバーに送信される初期データを割り当てる必要があります。クライアント スタブは追加のデータを割り当てます。 サーバー スタブは、クライアントから送信される初期データを割り当てます。サーバー アプリケーションは、必要に応じて新しいデータを割り当てます。

 

いずれの場合も、クライアント スタブはメモリを解放しません。 クライアント アプリケーションは、終了する前にメモリを解放する必要があります。 サーバー スタブは、リモート プロシージャ 呼び出しが戻ったときにメモリを解放します ([ allocate] ACF 属性の対象)。