Tenga en cuenta los asuntos que se relacionan con la gestión de almacenamiento cuando se desarrollan extensiones definidas por el usuario en el lenguaje de programación C.
Si está desarrollando extensiones definidas por el usuario utilizando el lenguaje de programación Java™, puede utilizar métodos de manejo de series Java estándares.
Toda memoria asignada por una extensión definida por el usuario la debe liberar la extensión definida por el usuario. La construcción de un nodo en tiempo de ejecución hace que se invoque la función cniCreateNodeContext, lo que permite a la extensión definida por el usuario asignar áreas de datos específicas de la instancia del nodo para almacenar un contexto. La dirección del contexto se devuelve al intermediario y se pasa otra vez al intermediario cuando un método interno hace que se invoque una función de extensión definida por el usuario; de este modo, la extensión definida por el usuario en C puede localizar y utilizar el contexto correcto para el proceso de función.
El intermediario pasa las direcciones de objetos C++ a la extensión definida por el usuario, que se utilizan como descriptores de contexto que se deben devolver en las llamadas de función subsiguientes. La extensión definida por el usuario en C no debe manipular ni utilizar estos punteros de ningún modo, por ejemplo, intentando liberar almacenamiento utilizando la función free. Dichas acciones producen un comportamiento imprevisible en el intermediario.
Se invoca la función de implementación cniCreateNodeContext siempre que se haya creado internamente el objeto del nodo subyacente. Se llama cuando un intermediario se define con un flujo de mensajes que utiliza un nodo definido por el usuario. Esta actividad no es necesariamente la misma que la creación (o la reutilización) de una hebra para ejecutar una instancia de flujo de mensajes que contiene el nodo. La función cniCreateNodeContext sólo se llama una vez, durante la configuración del flujo de mensajes, independientemente del número de hebras se ejecutan en el flujo de mensajes.
Se aplican consideraciones similares a los analizadores definidos por el usuario y a la función de implementación cpiCreateContext correspondiente.