Punteros y asignación de memoria
La capacidad de cambiar la memoria a través de punteros a menudo requiere que el servidor y el cliente asignen suficiente memoria para los elementos de la matriz.
Cuando un código auxiliar debe asignar o liberar memoria, llama a funciones de biblioteca en tiempo de ejecución que, a su vez, llaman a las funciones midl_user_allocate y midl_user_free. Estas funciones no se incluyen como parte de la biblioteca en tiempo de ejecución. Debe escribir sus propias versiones de estas funciones y vincularlas con la aplicación. De este modo, puede decidir cómo administrar la memoria. Al compilar el archivo IDL en modo de compatibilidad con OSF (/osf), no es necesario implementar estas funciones. Debe escribir estas funciones en los siguientes prototipos:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Por ejemplo, las versiones de estas funciones para una aplicación simplemente pueden llamar a funciones de biblioteca estándar:
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);
}