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);
}
手記
RpcSs パッケージが有効になっている場合 (たとえば、[enable_allocate] 属性を使用した結果)、サーバー プログラムは RpcSmFree使用してメモリを解放する必要があります。 詳細については、「RpcSs メモリ管理パッケージの 」を参照してください。