Pointeurs et allocation de mémoire
La possibilité de modifier la mémoire par le biais de pointeurs nécessite souvent que le serveur et le client allouent suffisamment de mémoire pour les éléments du tableau.
Lorsqu’un stub doit allouer de la mémoire ou libérer de la mémoire, il appelle des fonctions de bibliothèque d’exécution qui, à leur tour, appellent les fonctions midl_user_allocate et midl_user_free. Ces fonctions ne sont pas incluses dans la bibliothèque d’exécution. Vous devez écrire vos propres versions de ces fonctions et les lier à votre application. De cette façon, vous pouvez décider comment gérer la mémoire. Lors de la compilation de votre fichier IDL en mode de compatibilité OSF (/osf), vous n’avez pas besoin d’implémenter ces fonctions. Vous devez écrire ces fonctions dans les prototypes suivants :
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Par exemple, les versions de ces fonctions pour une application peuvent simplement appeler des fonctions de bibliothèque 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);
}