*Markus: (C++) Wie "Segmentation Fault" ausfindig machen?

Beitrag lesen

Hallo,

Die Kompilierung meines Programms verläuft problemlos. Dummerweise wird aber der Start des Programms durch ein "Segmentation Fault" abgebrochen.
Ich konnte den Fehler auf diese Zeile in main() eingrenzen.

  
SpriteBase RescuerBase;  
/* Es ist diese Zeile darunter */  
RescuerBase.setGraphicData("rescuer");  

"rescuer" ist übrigens ein gültiges Verzeichnis.
Die Funktion dazu sieht folgendermaßen aus, wobei ich sicherheitshalber auch die indirekt einbezogene Funktion angebe (da ich auf die Variablen dieser Methode zugreife):

  
class SpriteBase    {  
  
       public:  
       int imageWidth;  
       int imageHeight;  
       int frameNumbers;  
       SpriteFrame *animPart;  
       void setGraphicData(char *dir);  
};  
  
  
void SpriteBase::setGraphicData(char *dir)    {  
       FILE *fp;  
       char filename[255];  
       char buffer[255];  
       char name[255];  
       int count;  
       int pause = 0;  
  
       sprintf(filename, "%s/info", dir);  
       if ( (fp=fopen(filename, "r")) == NULL)    {  
           printf("Error opening file %s", filename);  
           exit(1);  
       }  
       fgets(buffer, 255, fp);  
       sscanf(buffer, "FILES:%d", &frameNumbers);  
       animPart = new SpriteFrame[frameNumbers];  
       while (!feof(fp) && count < frameNumbers)    {  
           fgets(buffer, 255, fp);  
           if (buffer[0] != '\n' && buffer[0] != '\r' && buffer[0] != '\0' && strlen(buffer) != 0)    {  
              sscanf(buffer, "%s %d", name, &pause);  
              sprintf(filename, "%s/%s", dir, name);  
              SDL_Surface *temp;  
              if ( (temp = IMG_Load(filename)) == NULL)    {  
                  printf("Couldn't find %s\n", filename);  
                  exit(1);  
             }  
              animPart[count].image = SDL_DisplayFormat(temp);  
              animPart[count].pause = pause;  
              imageWidth = animPart[count].image->w;  
              imageHeight = animPart[count].image->h;  
               count++;  
               SDL_FreeSurface(temp);  
           }  
       }  
       fclose(fp);  
}  

Findet jemand diesen Fehler, der einen SegFault auslöst? Ich sehe nämlich offensichtlich den Wald vor lauter Bäumen nicht mehr.

Markus.

--
http://www.apostrophitis.at
Maschiene währe Standart Gallerie vorraus Packete Objeckte tollerant vieleicht