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
Si me pudieran decir donde tengo mi error se los agradeceria :p
Codigo:
Estructura
Código (c) [Seleccionar]
struct Pagina
{
char *Instruccion;
char *register1;
char *register2;
};
Código (c) [Seleccionar]
int *Escribir_swap(const char *PCB, TMS *TABLE_TMS, Pagina **Paginas, int dk){ /*dk numero de marcos a utilizar el proceso*/
FILE *A;
char exeption[5] = " \n\t,";
char LINE[LONG_MAX_LINE];
int TAM = 0, flag = 0; /*para controlar si creo una nueva pagina en la tms*/
int *pos = (int *)malloc(dk*sizeof(int)); /* Vamos guardando las posiciones que ocupara el proceso en la swap*/
int i = 0, j = 0, num_page = 0;
for(i = 0; i < MARCOS; i++){
if(enable_pos[i] == 1){
for(j = 0; j < PAGINAS; j++){
if( strcmp(Get_I(TAM, PCB, LINE, exeption, A), "END") == 0 ){
flag = 0;
break;
}
else{
(Paginas[i][j].Instruccion = strdup(Get_I(TAM, PCB, LINE, exeption, A)));
(Paginas[i][j].register1 = strdup(Get_R(TAM, PCB, LINE, exeption, A, 1)));
(Paginas[i][j].register2 = strdup(Get_R(TAM, PCB, LINE, exeption, A, 2)));
TABLE_TMS[i].NOM_ARCHIVO = PCB; /*nombre del proceso en la tms*/
TABLE_TMS[i].num_page = num_page; /*el numero de pagina en la tms*/
enable_pos[i] = 0; /*activamos bandera en esa posicion para indicar que esta ocupada*/
pos[num_page] = i; /*llenamos el vector que contiene la posicion de las paginas en la swap*/
flag = 1;
TAM++;
}
}
}
if (flag == 1 & num_page <= dk) /* si creo la nueva pagina*/
{
num_page++; /*creamos el nuevo indice para una nueva pagina*/
}
}
return pos;
}