midl_user_free関数
midl_user_free関数は、RPC 開発者が提供する必要があります。 RPC スタブおよびライブラリ ルーチンの midl_user_allocate によって割り当てられたメモリが解放されます。 midl_user_free関数は、次のプロトタイプと一致する必要があります。
void __RPC_USER midl_user_free(void * pBuffer);
pBuffer パラメーターは、解放するメモリへのポインターを指定します。 OSF 互換 (/osf) モードでコンパイルする場合を除き、クライアント アプリケーションとサーバー アプリケーションの両方でmidl_user_free関数を実装する必要があります。 midl_user_free関数は、midl_user_allocateによって割り当てられたすべてのストレージを解放できる必要があります。
アプリケーションとスタブは、割り当てられたオブジェクトを処理するときに midl_user_free を呼び出します。
- サーバー アプリケーションは midl_user_free を呼び出して、動的に割り当てられたデータ ノードを削除する場合など、アプリケーションによって割り当てられたメモリを解放する必要があります。
- サーバー スタブは 、 すべての [out] 引数、[in]、[out] 引数、および関数の戻り値をマーシャリングした後、midl_user_freeを呼び出してサーバー上のメモリを解放します。
たとえば、"Hello, world" を表示する RPC Windows サンプル プログラムでは、C 関数フリーの観点から midl_user_free が実装されています。
void __RPC_USER midl_user_free(void __RPC_FAR * p)
{
free(p);
}
Note
RpcSs パッケージが有効になっている場合 (たとえば、[ enable_allocate] 属性を使用した結果) は、サーバー プログラムで RpcSmFree を使用してメモリを解放する必要があります。 詳細については、「 RpcSs メモリ管理パッケージ」を参照してください。