Zugriffsverletzung mit SDL



  • Hi!

    ich habe ein Problem mit der SDL:
    Ich habe ein globales SDL_Surface das ich in meiner main mit SDL_SetVideoMode erstelle. Das geht auch ganz gut.
    Dann habe ich 100 Instanzen einer Klasse(gepseichert in einem std::vector).

    In der draw Funktion dieser Klasse bekomme ich beim Aufruf von SDL_BlitSurface einer Speicherzugriffsverletzung(Windows)

    Der Code sieht so aus:

    ....
    ....
    	// now draw the surface to the screen
    	SDL_Rect rect;
    	rect.x = x;
    	rect.y = y;
    	rect.w = g_screen->w;
    	rect.h = g_screen->h;
    
    	if( g_screen == NULL)
    	{
    		cout << "Video Mode not set" << endl;
    		return;
    	}
    
            // hier bekomme ich die Zugrissverletzung
    	SDL_BlitSurface(m_bloc,NULL,g_screen,&rect);
    ...
    ...
    

    Der Debugger bringt nichts aufregendes.



  • naja
    hat sich jetzt erledigt

    irgendwie hatte ich da überall viel zu viel gepfuscht oder so

    ich hab halt jetzt alles nochmal neu gemacht, ohne globales Surface(also das Surface nur in main) und jetzt funktionierts 🙂



  • Trotzdem ist da ein Fehler!
    WEnn dann musst du jawohl vor dem Zugriff auf g_screen prüfen ob dieser Null ist sonst bekommste in den Zeilen

    rect.w = g_screen->w;
    rect.h = g_screen->h;
    

    die schon vorher stehen Ärger.


Anmelden zum Antworten