Bonjour,

Je débute avec la programmation sur SDL 2 (et sur SDL en général... et sur C en général).
J'ai un problème de fuite mémoire avec la fonction SDL_RenderClear.
Je doute que le problème viennent de la fonction elle-même, le problème doit venir de mon code et je dois passer à coté de quelque chose que je ne comprend pas.

Voici mon code simplifié au maximum

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <SDL2/SDL.h>
 
#include <stdio.h>
#include <string.h>
 
int main(int argc, char** argv)
{
    SDL_Window* pEcran = NULL;
    SDL_Renderer* pRenderer = NULL;
    SDL_Event ev;
 
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0 ) {
        fprintf(stdout,"Échec de l'initialisation de la SDL (%s)\n",SDL_GetError());
    } else {    // if (SDL_Init(SDL_INIT_EVERYTHING) != 0 )
        pEcran = SDL_CreateWindow("TEST",  SDL_WINDOWPOS_CENTERED,
                                              SDL_WINDOWPOS_CENTERED,
                                              800,
                                              600,
                                              SDL_WINDOW_SHOWN);
 
       if( pEcran == NULL ) {
            fprintf(stderr,"Erreur de création de la fenêtre: %s\n",SDL_GetError());
        } else {    // if( pEcran == NULL )
            pRenderer = SDL_CreateRenderer(pEcran,-1,SDL_RENDERER_ACCELERATED);
 
            while (1) {
                while ( SDL_PollEvent(&ev) == 1 ) { }
                SDL_RenderClear(pRenderer); // Sans cette ligne, pas de perte mémoire ?!?
                SDL_RenderPresent(pRenderer);
            }   // while (1)
        }   // else if( pEcran == NULL )
    }   // else (SDL_Init(SDL_INIT_EVERYTHING) != 0 )
 
    SDL_DestroyRenderer(pRenderer);
    SDL_DestroyWindow(pEcran);
    SDL_Quit();
 
    return 0;
}
Si j'enlève la ligne SDL_RenderClear, je n'ai pas de problème de fuite mémoire, avec ça fuit.

Je ne sais pas quelles informations pourrait vous être utile pour m'aider alors en voici quelques une en vrac :
- j'utilise code blocks 13.12
- La version de SDL est 2.0.3
- J'utilise la version 32bits

Si une âme charitable pouvait m'indiquer mon (mes ?) erreur(s), je lui en serais très reconnaissant.
Merci.