C/Visual C - Estructuras en Memoria compartida

 
Vista:

Estructuras en Memoria compartida

Publicado por morgul (11 intervenciones) el 26/06/2006 17:11:44
Hola
Alguien me podria decir como hacer para poder pasar estructuras a traves de memoria compartida,ya se pasar cadenas de caracteres pero no averiguo el como pasar estructuras.
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Estructuras en Memoria compartida

Publicado por fernando.gomez (1603 intervenciones) el 26/06/2006 22:44:44
Primero, lo primero, sería que definieras qué es eso de "memoria compartida".

union Union
{
int a;
char sz;
long l;
short s;
};

Union u;
u.a = 0x41;
cout << u.sz << endl; // imprime el caracter A

Para mí lo anterior podría significar memoria compartida, basándome en la definición de una unión. ¿O te refieres a IPC -comunicación entre procesos? ¿O cómo?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Estructuras en Memoria compartida

Publicado por Morgul (11 intervenciones) el 27/06/2006 09:15:17
Tambien tienes razon, q si no lo defino bien a ver quien responde. Me refiero a memoria compartida entre procesos,la q se crea con CreateFileMapping y se lee/escribe con MapViewOfFile.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Estructuras en Memoria compartida

Publicado por Morgul (11 intervenciones) el 27/06/2006 10:35:32
Ya e sido capaz de hacerlo es una tonteria, q como siempre uno cae al final d que puede ser asi:
lpDir = (tmen * )MapViewOfFile(s_hFileMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);

Pero ahora la pregunta que me surge es como puedo pasar si se puede toda una estructura de este tipo:

typedef struct mm{
int numero;
char cadena[256];
struct mm * sig;
} tmen;

Porque si hago lo escrito arriba solo me pasa el primer nodo y no lo haya escrito en sig;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Estructuras en Memoria compartida

Publicado por fernando.gomez (1603 intervenciones) el 27/06/2006 17:56:50
PUes sí, porque el miembro sig es un puntero, y seguramente te está pasando el número de la dirección en memoria, pero no el objeto mismo. Es el mismo problema que si intentaras escribir en un archivo binario esa misma estructura.

¿El miembro sig tiene que ser forzosamente un puntero? ¿No podría ser una referencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar