Segmentation Fault wegen übergabe?



  • Hallo,

    in meinem Programm benutze ich Allegro. Nun wollte ich nur mal so aus Spaß eine Art Konsole schreiben. Allerdings kommt beim initialisieren der Buchstaben schon ein Fehler:
    "Eine Zugriffsverletztung( Segmentation Fault ) trat in ihrem Programm auf" [DevCpp]

    irgendwie schon komisch, und wieso der Fehler kommt versteh ich erst recht nicht 😕

    Hier einmal der Code(gekürzt):

    /* Die Größe der Buchstaben in Pixel */
    #define ZEICHEN_BREIT          10
    #define ZEICHEN_HOCH           15
    
    /*
      Die Informationen für einen Buchstaben .
      1 = weis; 0 = schwarz
    */
    short int letter_A[ZEICHEN_HOCH][ZEICHEN_BREIT] = {
    	{0,0,0,0,1,1,0,0,0,0},
    	{0,0,0,0,1,1,0,0,0,0},
    	{0,0,0,1,0,0,1,0,0,0},
    	{0,0,0,1,0,0,1,0,0,0},
    	{0,0,0,1,0,0,1,0,0,0},
    	{0,0,1,0,0,0,0,1,0,0},
    	{0,0,1,0,0,0,0,1,0,0},
    	{0,0,1,1,1,1,1,1,0,0},
    	{0,1,0,0,0,0,0,0,1,0},
    	{0,1,0,0,0,0,0,0,1,0},
    	{1,1,1,0,0,0,0,1,1,1},
    	{0,0,0,0,0,0,0,0,0,0},
    };
    
    typedef
    	struct _KONSOLE
    	{
    		BITMAP *letter_A; /* Eine Bitmap für den Buchstaban "A" */
    		/* Falls das erzeugen des Buchstabens erfolgreich sein sollte, werden die Buchstaben natürlich in einem Array gespeichert */
    		/* ... */
    	}
    KONSOLE;
    
    KONSOLE kon;
    
    /* Einen Buchstaben zeichnen */
    BITMAP *draw_letter( short int infos[][ZEICHEN_BREIT] )
    {
    	short int x = 0;
    	short int y = 0;
    
    	BITMAP *buf = create_bitmap( ZEICHEN_BREIT, ZEICHEN_HOCH ); /* Eine Bitmap erzeugen */
    	clear_to_color( buf, makecol( 0, 0, 0 ) ); /* Die Bitmap schwarz einfärben */
    
    	for( y=0; y<ZEICHEN_HOCH; y++ )
    	{
    		for( x=0; x<ZEICHEN_BREIT; x++ )
    		{
    			/* Wenn in dem Info-Array eine 1 steht, wird ein weißes Pixel an diese Position gesetzt. */
    			if( infos[y][x] == 1 )
    			{
    				putpixel( buf, x, y, makecol( 255, 255, 255 ) );
    			}
    		}
    	}
    
    	/* Die Bitmap zurückgeben */
    	return buf;
    }
    
    /* Alle Buchstaben zeichnen */
    void draw_letters( void )
    {
    	kon.letter_A = draw_letter( letter_A );
    	/* ... */
    }
    

    irgendwie beim Aufruf - denk ich - entsteht der Fehler.
    Nur ich habe keine Ahnung warum. Könnt ihr mir helfen?

    Danke schon mal im voraus!



  • Ich nochmal,

    ... hat sich grad erledigt.
    Die Übergabe funktioniert. Nur der Fehler trat später bei einer Ausgabe auf.


Anmelden zum Antworten