Pekare och minnesallokering
Möjligheten att ändra minne genom pekare kräver ofta att servern och klienten allokerar tillräckligt med minne för elementen i matrisen.
När en stub måste allokera eller frigöra minne anropas körningsbiblioteksfunktioner som i sin tur anropar funktionerna midl_user_allocate och midl_user_free. Dessa funktioner ingår inte som en del av körningsbiblioteket. Du måste skriva egna versioner av dessa funktioner och länka dem till ditt program. På så sätt kan du bestämma hur du ska hantera minnet. När du kompilerar IDL-filen i OSF-kompatibilitetsläge (/osf) behöver du inte implementera dessa funktioner. Du måste skriva dessa funktioner till följande prototyper:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Till exempel kan versionerna av dessa funktioner för ett program helt enkelt anropa standardbiblioteksfunktioner:
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);
}