Puntatori e allocazione di memoria
La possibilità di modificare la memoria tramite puntatori richiede spesso che il server e il client allocano memoria sufficiente per gli elementi nella matrice.
Quando uno stub deve allocare o liberare memoria, chiama funzioni della libreria di runtime che a sua volta chiamano le funzioni midl_user_allocate e midl_user_free. Queste funzioni non sono incluse come parte della libreria di runtime. È necessario scrivere versioni personalizzate di queste funzioni e collegarle all'applicazione. In questo modo, è possibile decidere come gestire la memoria. Quando si compila il file IDL in modalità OSF-compatibility (/osf), non è necessario implementare queste funzioni. È necessario scrivere queste funzioni nei prototipi seguenti:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Ad esempio, le versioni di queste funzioni per un'applicazione possono semplicemente chiamare funzioni della libreria standard:
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);
}