ポインターとメモリ割り当て
ポインターを使用してメモリを変更するには、多くの場合、サーバーとクライアントが配列内の要素に十分なメモリを割り当てる必要があります。
スタブは、メモリを割り当てるか解放する必要がある場合、ランタイム ライブラリ関数を呼び出し、midl_user_allocate関数とmidl_user_freeを呼び出します。 これらの関数は、ランタイム ライブラリの一部として含まれません。 これらの関数の独自のバージョンを記述し、それらをアプリケーションにリンクする必要があります。 このようにして、メモリを管理する方法を決定できます。 OSF 互換 (/osf) モードで IDL ファイルをコンパイルする場合、これらの関数を実装する必要はありません。 これらの関数は、次のプロトタイプに記述する必要があります。
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
たとえば、アプリケーションのこれらの関数のバージョンでは、単に標準ライブラリ関数を呼び出すことができます。
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
{
free(ptr);
}