Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - facster7

#1
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
struct Pagina
{
   char *Instruccion;
   char *register1;
   char *register2;
};




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;
}