Ponteiros e alocação de memória
A capacidade de alterar a memória por meio de ponteiros geralmente requer que o servidor e o cliente aloquem memória suficiente para os elementos na matriz.
Quando um stub deve alocar ou liberar memória, ele chama funções de biblioteca em tempo de execução que, por sua vez, chamam as funções midl_user_allocate e midl_user_free. Essas funções não são incluídas como parte da biblioteca em tempo de execução. Você precisa escrever suas próprias versões dessas funções e vinculá-las ao seu aplicativo. Dessa forma, você pode decidir como gerenciar a memória. Ao compilar o arquivo IDL no modo osF-compatibility (/osf), você não precisa implementar essas funções. Você deve gravar essas funções nos seguintes protótipos:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Por exemplo, as versões dessas funções para um aplicativo podem simplesmente chamar funções de biblioteca padrão:
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);
}