Spiel wird nach einer gewissen Zeit sehr langsam und hängt [ C++/ SDL ]



  • Hallo!

    Ich arbeite nun seit 2 Tagen an einem Hangman Spiel und es ist jetzt bereits fertig. Ungefähr 5 Runden lassen sich problemlos spielen, aber dann beginnt das Spiel zu hängen und man kann kaum noch etwas klicken ...

    Liegt das vielleicht daran, dass mein Programm sehr viel Speicher braucht und denn nicht wieder freigibt oder könnte ich da noch etwas anderes falsch gemacht haben?

    Ich wäre über jede Hilfe dankbar! 🙂

    Lg
    SFandler



  • Und wir wären über ein paar mehr Infos, oder die Stellen im Code wo es hängt dankbar wenn wir dir helfen sollen 😉

    Lg freeG



  • SFandler schrieb:

    Liegt das vielleicht daran, dass mein Programm sehr viel Speicher braucht und denn nicht wieder freigibt oder könnte ich da noch etwas anderes falsch gemacht haben?

    Kann sein. Vielleicht auch nicht. Das findest du am Besten mit einem Profiler raus, der dir dann auch genau sagt welcher Speicher nicht freigegeben wird.



  • Das ganze Programm hängt nach ca. 1 Minute Spielzeit.
    In welchem Programmteil weiß ich nicht ( ? ) ( wahrscheinlich das ganze Spiel )

    Ich kann nicht viel dazu sagen .. Auf jeden Fall habe ich in der main-loop keine Pause und es sollte dann funktionieren, was es aber nicht tut 😕

    Lg
    SFandler

    Edit:
    Ich habe das Spiel jetzt am PC meines Vater's gestartet und bei dem stürzt dann sogar das Spiel ab ( Es wurde ein Problem gefunden und Hangman.exe musste beendet werden .. ). Woran könnte das denn liegen? Das Programm läuft immer die selbe Schleife durch und wenn ich einen Fehler eingebaut hätte, würde der doch schon am Beginn des Spiels sichtbar werden, oder nicht?



  • SFandler schrieb:

    Das ganze Programm hängt nach ca. 1 Minute Spielzeit.
    In welchem Programmteil weiß ich nicht ( ? ) ( wahrscheinlich das ganze Spiel )

    Ich kann nicht viel dazu sagen ..

    Und wir, die noch nichtmal ansatzweise den Aufbau deines Programms kenne, können dir erst recht nichts dazu sagen. Wie gesagt, schau dich mal nach einem geeigneten Profiling-Tool um. Aternativ kannst du uns auch deinen Code zum drüberschauen geben, wenns nicht zu viel ist (bitte keine 150-Zeilen Postings, das liest sich eh niemand durch).
    Lies dir nebenbei auch bitte mal den Link in meiner Signatur durch.



  • Was für ne Meldung kommt denn, wenn du es im Debuger laufen lässt? Vll gibts einen Speicherzugriffsfehler.

    Lg freeG



  • Man könnte in dem Moment wo es langsam wird auch einfach mal auf "Pause" drücken im Debugger...



  • Natürlich handelt es sich um ein Speicherleck, und so wie du es beschreibst, mit mindestens 1 MB pro Sekunde. Alles andere wäre zu diesem Zeitpunkt reine Spekulation. 🙄

    Anfängertipp, den ich mir beigebracht habe: Öffne einen TaskManager und schau dir die Speicherauslastung an. Wenn diese kontinuierlich nach oben steigt, hast du mit ziemlicher Sicherheit einen Zeiger, der dir Löcher in den Speicher scheißt schießt.

    Zweiter Anfängertipp: Ein bisschen Code in

    -Tags:
    
    [cpp]
    , also so,
    

    schadet nimmer, es sei denn, es handelt sich um einen sinnentleerten Oschi von Quellcode - das liest sich keiner durch.



  • Ok danke für die Antwort!, aber woran könnte das liegen .. ? Variablen werden nur am Beginn des Programms und in den Funktionen definiert .. Kannst du mir vielleicht helfen, wie ich das gerade biegen kann?

    Vielen Dank im Voraus!



  • Von Ironie hast du auch keine Ahnung, oder? 3 Leute haben jetzt schon gesagt, dass du mal Code posten sollst. Wenn du den Vorschlag nicht beherzigst, kann dir aus dem Blauen heraus auch keiner helfen.



  • [quote="SFandler"]Ok danke für die Antwort!, aber woran könnte das liegen .. ? Variablen werden nur am Beginn des Programms und in den Funktionen definiert .. Kannst du mir vielleicht helfen, wie ich das gerade biegen kann?

    Abgesehen davon, dass meine Kristallkugel kaputt ist, ich dir über's Internet nicht die Hand lesen kann und im Gedankenleseunterricht in der Schule ziemlich mies war, sodass ich keine Möglichkeit habe, dir genau zu sagen, was dein Problem ist und meine anfängliche Ironie nicht erkannt wurde, sodass ich mich gezwungen sehe, direkt mit "Code needed!!!!111einseinselfelf" zu antworten, muss es überhaupt nichts heißen, wenn du Variablen am Anfang deklarierst. Einen Zeiger kann ich ja auch am Anfang einer Funktion deklarieren und mit ihm in einer Schleife meinen RAM zerschießen.



  • Ich mach den Thread mal zu, das wird sonst nur zur Zeitverschwendung für alle beteiligten. Wenn SFandler wirklich an einer Lösung gelegen ist, liest er sich erst den Link in meiner Signatur durch und postet dann eine Frage, auf die man auch eine Antwort geben kann.


Log in to reply