Ver Mensaje Individual
  #1  
Antiguo 23-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Memoria Compartida. Shared Memory

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.
Responder Con Cita