Zugriffsverletzung ( vermutlich durch leeren Zugriff )



  • Hallo,

    ich wollte mich mal mit SFML vertraut machen und habe als Einstieg versucht, ein Fenster zu erstellen. Nun tritt aber folgendes Problem auf:

    Unbehandelte Ausnahme bei 0x0fa259da (msvcr100d.dll) in SFML_game.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xccccccc0.
    

    Die Zeile, zu der er springt: ( enthalten der dbgdel.cpp )

    _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
    

    Ich weiß nicht wirklich, was er von mir will. Laut dem Fehlercode möchte er ja auf "etwas leeres" zugreifen. Anscheinend der String in der folgenden Zeile:

    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    

    Etwas anderes fällt mir gerade nicht ein.

    ( hier mal das komplette Programm )

    #include <SFML/Graphics.hpp>
    
    int main()
    {
    	sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    
    	while(window.isOpen())
    	{
    		sf::Event Event;
    		while(window.pollEvent(Event))
    		{
    			if(Event.type == sf::Event::Closed)
    				window.close();
    		}
    	}
    }
    

    Vielleicht weiß jemand anders weiter?

    Grüße



  • Du verwendest folgenden Konstruktor:

    RenderWindow (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
    

    Dem kann man schon mal entnehmen, dass SFML über eine eigene String-Klasse verfügt. Was wird diese auf jeden Fall tun? Entsprechenden Speicher auf dem Heap anlegen. Ich vermute daher, dass du ein temporäres String-Objekt erzeugen musst:

    #include <String.hpp>
    sf::RenderWindow window(sf::VideoMode(800, 600), String("Fenster"));
    


  • Das Programm sieht in Ordnung aus. Benutzt du SFML als DLL? Vielleicht hast du da beim Ausführen eine andere DLL liegen als gegen die gebaut worden ist.



  • Vielleicht hast du da beim Ausführen eine andere DLL liegen als gegen die gebaut worden ist.

    Hast du gelitten?



  • Textmarker schrieb:

    Ich vermute daher, dass du ein temporäres String-Objekt erzeugen musst

    Hast Du gelitten?



  • Textmarker schrieb:
    Ich vermute daher, dass du ein temporäres String-Objekt erzeugen musst

    Hast Du gelitten?

    Absolut valide Annahme. Habt ihr beide zusammen gelitten oder was?


Log in to reply