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!!!