Título: Llenar matriz de estructuras con punteros en c Publicado por: facster7 en 12 Julio 2018, 03:54 am Estoy intentado llenar una matriz de estructuras usando punteros, pero solo lo hace para la primera corrida de los ciclos despues me manda un fallo de segmento, habia comenzado a escribirlo en windows y corria bien el llenado lo hacia pero ahora lo estoy corriendo en linux y no se que pasa.
Si me pudieran decir donde tengo mi error se los agradeceria :p Codigo: Estructura Código
Código
Título: Re: Llenar matriz de estructuras con punteros en c Publicado por: MAFUS en 12 Julio 2018, 04:25 am El problema podría estar en la forma de tratar el argumento de la función Pagina **Paginas. Es un puntero a puntero por tanto toda información del tamaño de las dimensiones ha desaparecido, sólo se conoce el tamaño del tipo de dato. Esto hace que al usarlo como matriz en Paginas[i][j] el programa no sepa cuántos bytes deba saltar por cada incremento de i.
Título: Re: Llenar matriz de estructuras con punteros en c Publicado por: facster7 en 12 Julio 2018, 06:14 am El problema podría estar en la forma de tratar el argumento de la función Pagina **Paginas. Es un puntero a puntero por tanto toda información del tamaño de las dimensiones ha desaparecido, sólo se conoce el tamaño del tipo de dato. Esto hace que al usarlo como matriz en Paginas[i][j] el programa no sepa cuántos bytes deba saltar por cada incremento de i. Como podria mantener esa informacion, de que manera podria indicar el desplazamiento de cada ciclo? Título: Re: Llenar matriz de estructuras con punteros en c Publicado por: MAFUS en 12 Julio 2018, 12:28 pm No sé cómo has declarado el dato Pagina **paginas fuera de la función.
Si es un array de dos dimensiones el argumento de la función debe ser un array de dos dimensiones donde obligatoriamente la de más a la derecha debe estar definida. Es decir: Si has declarado el array en main() o dónde sea como Código: Pagina paginas[MARCOS][PAGINAS]; Código: int* Escribir_swap( ..., Pagina paginas[][PAGINAS], ...) { Título: Re: Llenar matriz de estructuras con punteros en c Publicado por: facster7 en 12 Julio 2018, 19:36 pm No sé cómo has declarado el dato Pagina **paginas fuera de la función. Si es un array de dos dimensiones el argumento de la función debe ser un array de dos dimensiones donde obligatoriamente la de más a la derecha debe estar definida. Es decir: Si has declarado el array en main() o dónde sea como Código: Pagina paginas[MARCOS][PAGINAS]; Código: int* Escribir_swap( ..., Pagina paginas[][PAGINAS], ...) { La define como variable global de esta forma Código posteriormente reservomemoria para ella dentro del main Código
De hecho de igual forma intente hacerlo como array y da el mismo resultado, solo llena la primera estructura, falla cuando Código: i = 0 y j =1 Título: Re: Llenar matriz de estructuras con punteros en c Publicado por: MAFUS en 12 Julio 2018, 20:36 pm Hice este programa de prueba para abordar el problema
Código
Y funciona perfecto. Después, regresando a tu código he visto otra cosa: Código: TABLE_TMS[i].NOM_ARCHIVO = PCB; Título: Re: Llenar matriz de estructuras con punteros en c Publicado por: facster7 en 14 Julio 2018, 09:25 am Logre encontrar el error, la funcion Get_R en ciertas ocasiones me lanza NULL
y eh ahi que me lanzaba el fallo de segmentacion por que hacia strdup(NULL), lo que no entiendo es por que en windows me dejaba correr el codigo y no me marcaba algun fallo, pero bueno. Muchas Gracias por tu ayuda y por las sugerencias.. pd: si tienes razon sobre que me faltaba ese strdup.... |