Mémoire orpheline
Si votre application distribuée utilise un paramètre de pointeur [ in, out, unique] ou [in, out, ptr], le côté serveur de l’application peut modifier la valeur du paramètre pointeur sur null. Lorsque le serveur retourne ensuite la valeur Null au client, la mémoire référencée par le pointeur avant l’appel de procédure distante est toujours présente côté client, mais n’est plus accessible à partir de ce pointeur (sauf dans le cas d’un pointeur complet avec alias). Cette mémoire est dite orpheline. Il s’agit également d’une fuite de mémoire. L’orpheline répétée de la mémoire sur le client entraîne l’insuffisante des ressources de mémoire disponibles du client.
La mémoire peut également être orpheline chaque fois que le serveur change un pointeur incorporé en valeur Null. Par exemple, si le paramètre pointe vers une structure de données complexe telle qu’une arborescence, le côté serveur de l’application peut supprimer des nœuds de l’arborescence et définir les pointeurs à l’intérieur de l’arborescence sur null.
Une autre situation qui peut entraîner une fuite de mémoire implique des tableaux conformes, variables et ouverts contenant des pointeurs. Lorsque l’application serveur modifie le paramètre qui spécifie la taille du tableau ou la plage transmise afin qu’il représente une valeur plus petite, les stubs utilisent la ou les valeurs plus petites pour libérer de la mémoire. Les éléments de tableau dont les index sont supérieurs au paramètre size sont orphelins. Votre application doit libérer des éléments en dehors de la plage transmise.