Voy a intentar ser breve.
He implementado una clase C++ para compartir memoria desde mas de una aplicación, según los consejos de
Microsoft. La clase es muy simple, consta de un constructor que distingue entre servidor y cliente y una función que devuelve el Buffer de memoria compartida.
El uso que quería darle y para la que la diseñé era para pasar los parámetros de la linea de comandos de un programa, a otra instancia previa del mismo. De forma que el primero en crearse recibe un Mensaje de la segunda instancia para crear un objeto SaredMemory en modo cliente y leer lo que la primera instancia le coloca en el buffer, que también ha abierto como servidor. Después, el servidor se autodestruye y el cliente cierra su SharedMemory, pero antes copia el contenido en una memoria local.
Esto funciona. Se pasan los parámetros, se procesan y todo bien, salvo que al cerrar la aplicación (primera instancia, la otra ya no "vive") se produce un error de acceso a memoria.
No se si se debe a lo fugaz de la existencia de los objetos SharedMemory, o a la destrucción del servidor. El caso es que la memoria se pasa de una instancia a la otra, la copio y no se producen errores.
Se que existe un componente TSharedMemory que he descargado, aunque no lo he probado, quizás porque el mio no es realmente un componente sino una clase... Y porque debe existir desde la fase de diseño no siendo esta mi idea original.
¿Alguien tiene una explicación o tiene ideas que me puedan ayudar?.
Saludos.