Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/07/2008, 09:40
judy_mg
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema al acceder a memoria

Hola muy buenas!

Mirar tengo un problema al acceder a memoria. Dispongo de una estructura llamada superbloque.

struct super_block {

/* ptr al mapa bits del nodoi en memoria */
void *s_imap;

/* ptr al mapa de bits de bloques en memoria */
void *s_bmap;

/* ptr. al inodo del directorio raiz del sistema de ficheros */
struct inodo *s_iroot;
};

Como veis dentro de esta estructura tengo un puntero a otra estructura de tipo inodo.

extern struct inodo {
/* id de usuario del propietario del fichero */
unsigned short i_uid;

/* tamaño actual del fichero en bytes */
unsigned long i_tamanyo;

} inodos[FS_NUM_INODOS];

El problema que se nos plantea es que queremos tener una variable global

struct super_block *g_superbloque;

y durante la ejecucion damos valor al puntero s_iroot que inicialmente hemos reservado memoria para esa estructura.

g_superbloque->s_iroot=(struct inodo *)malloc(sizeof(struct inodo));

Y en el momento que queremos acceder a la información de la estructura de inodo por ejemplo i_tamanyo, a traves de g_superbloque nos da violacion de segmento.


Para acceder a dicha informacion hacemos:

(g_superbloque->s_iroot)->i_tamanyo


""Cosa que nos da fallo"" Hemos probado con el simbolo * delante de toda la linea pero ni siquiera nos compila.
Y cuando ponemos

&(g_superbloque->s_iroot)->i_tamanyo ---->>> nos devuelve 4, pero esto no puede estar bien. Ya no sabemos que podemos hacer!

Realmente la pregunta es..... ¿ Como accedemos a la información desde un puntero a una estructura (superbloque) que a su vez tiene un puntero a una estructura (inodo)?


Muchas graciasss!!!