3 Stimmen

SDL Veranstaltungen Memory Leak

Gibt es bekannte Methoden oder Funktionen in SDL, die bekanntermaßen Memory Leaks verursachen?

Ich habe für mein Programm festgestellt, dass im Laufe der Zeit täglich .1 MB Speicher zum Programmspeicher hinzugefügt werden (d. h. in genau 3 Minuten wurden zusätzliche '.4 MB' hinzugefügt).

Ich habe alle meine Oberflächen-Zeichen-/Blitfunktionen auskommentiert; im Grunde genommen nur die Hauptspielschleife auf die Ereignisstruktur und das Umblättern des Bildschirms isoliert, z. B.:

// .. Initialisieren
char quit = 0;
Uint8* keystate = NULL;
SDL_Event hEvent;
while (!quit) 
{
    // .. Code

    while (SDL_PollEvents(&hVvent)) {
        keystate = SDL_GetKeystate(NULL);
        // .. Ereignisverarbeitung
    }

    // .. Mehr Code

    if (SDL_Flip(screen) == -1)
        return 1

    SDL_Delay(1);
}   
// .. Aufräumen

1voto

Quetzy Garcia Punkte 1820

Mein bevorzugtes Werkzeug zur Überprüfung von Speicherlecks ist Valgrind. Nach dem Kompilieren Ihres Codes führen Sie einfach den folgenden Befehl aus:

valgrind --leak-check=full --show-reachable=yes ./ausführbar

Nach Abschluss überprüfen Sie die Ausgabe auf Informationen zu Speicherlecks. Das Tool kann ausführlicher sein, wenn Sie die -v Flagge setzen

1voto

Gino Punkte 11
valgrind --track-origins=yes --leak-check=full --show-reachable=yes ./ausführbar

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X