Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Linux:gcc][c]Segmentation Fault

    E' incredibile: ho una funzione semplicissima e corretta, ma nel secondo for,quando i=1 e j=3, il programma termina con "Segmentation fault"!
    Codice PHP:
    int Verifica(int PB)
     {
      
    int i,j;
      
    unsigned char A,B;
      for(
    i=0;i<3;i++)
       {
        
    A=(unsigned int)(PB>>(i*8));
        for(
    j=(i+1);j<4;j++)
         {
          
    B=(unsigned char)(PB>>(j*8)); //segmentation fault -> PB>>24!!!!!
          
    printf("\nA=%02x B=%02x PB=%08x j=%d",A,B,PB,j);
          if(
    A==B)
           {
            
    printf("\nERRORE: PB contiene pacchetti uguali\n");
            return 
    0;
           }
         }
       }
      return 
    1;
     } 
    Il codice č corretto...lo stesso cast che genera l'errore, messo in qualsiasi punto del programma, funziona a dovere... non so proprio cosa possa essere. Ho cercato e ricercato, ma non riesco proprio a capire in cosa consiste l'errore

    Grazie per gli aiuti!


  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    e perchč non lo casti a unsigned int come fai con l'altro?

  3. #3
    No... nn č quello l'errore... č stato solo un mio errore di battitura...sono stati messi entrami unsigned char. L'errore continua a farlo

    ho riprovato in svariati modi...


    mha... :master:



  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Cosa fa questo assegnamento:

    B=(unsigned char)(PB>>(j*8));

    ??

  5. #5
    Se sostituisci esplicitamente j*8 con 24?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    allora la soluzione č questa: la funzione non ha problemi, era l'struzione successiva alla chiamata che cercava di entrare in un vettore alla posizione 10 quando il vettore era definito di solo 5 campi...

    Grazie a tutti!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.