Speicherzugriffsfehler (Speicherabzug geschrieben)



  • Hallo, ich programmiere unter Ubuntu 12.10, und compiliere meine projekte mit dem g++ compiler und wenn ich diesen code ausführe:

    GLuint loadtexture( const string fileName ){
    
      SDL_Surface *image = IMG_Load( fileName.c_str() );
    
      SDL_DisplayFormatAlpha(image);
    
      unsigned object(0);
    
      glGenTextures(1, &object);
    
      glBindTexture(GL_TEXTURE_2D, object);
    
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    
      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image->w, image->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels);
    
      //Free surface
      SDL_FreeSurface(image);
    
      return object;
    }
    

    kommt der fehler: Speicherzugriffsfehler (Speicherabzug geschrieben).

    Ich habe das Gefühl das liegt an dem SDL_Surface pointer, aber ihr kennt euch mit sowas bestimmt besser aus. Sage schonmal vorab danke 😉



  • XXXXXXX schrieb:

    Hallo, ich programmiere unter Ubuntu 12.10, und compiliere meine projekte mit dem g++ compiler und wenn ich diesen code ausführe:

    GLuint loadtexture( const string fileName ){
    
      SDL_Surface *image = IMG_Load( fileName.c_str() );
     
      SDL_DisplayFormatAlpha(image);
     
      unsigned object(0);
     
      glGenTextures(1, &object);
     
      glBindTexture(GL_TEXTURE_2D, object);
     
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
       
      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image->w, image->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels);
     
      //Free surface
      SDL_FreeSurface(image);
     
      return object;
    }
    

    kommt der fehler: Speicherzugriffsfehler (Speicherabzug geschrieben).

    Ich habe das Gefühl das liegt an dem SDL_Surface pointer, aber ihr kennt euch mit sowas bestimmt besser aus. Sage schonmal vorab danke 😉

    Sorry, habe vergessen zu erwähnen dass ich das fehlerfrei compiliere, nur beim ausführen des programms kommt der fehler.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • nwp3 schrieb:

    http://www.libsdl.org/projects/docs/SDL_image/SDL_image_7.html

    Hat mir jetzt nicht wirklich weiter geholfen... Ich meine, das selbe tue ich ja in meinem code auch.. nur wenn ich dann die variable irgendwo verwende kommt dieser fehler.



  • Hast du das hier nicht gesehen ??????????

    // load sample.png into image
    SDL_Surface *image;
    image=IMG_Load("sample.png");
    if(!image) {
        printf("IMG_Load: %s\n", IMG_GetError());
        // handle error
    }
    

    Fehlerbehandlung ?? sonst zugriff auf NULL-Pointer -> zugriffsfehler


Anmelden zum Antworten