IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Fuite de mémoire dans ce code ?


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut Fuite de mémoire dans ce code ?
    Bonsoir,

    Je me permets de poster ce message ici, car je viens de remarquer que mon programme dispose d'une forte propension à prendre le maximum de place possible (gain de 1 mo par 20 sec je dirais).

    J'ai réussi à isoler une partie de code, qui permet de totalement stabiliser le programme (à 1.4 mo). Donc sauf erreur, il est très fortement probable que l'erreur se situe dans ces lignes ?

    Je vous poste le code, personnellement je ne vois pas ce qui cloche, si vous pouviez m'aider, je vous en seras reconnaissant (:

    Merci bien !

    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
     68 void GraphicalEngine::displayGfxText(std::string text, int fontcode, int colorcode, int x, int y){                                                                                                       
       69     /* Check first if fontcode and colorcode exists */
       70     if (text.length() > 0 && (fonts.find(fontcode) != fonts.end()) && (colors.find(colorcode) != colors.end())){
       71         SDL_Surface* textSurface = TTF_RenderText_Solid(fonts[fontcode], text.c_str(), *colors[colorcode]);
       72         if (textSurface){
       73             SDL_Rect position;
       74             position.x = x;
       75             position.y = y;
       76             if (SDL_BlitSurface(textSurface, NULL, screen, &position) < 0){
       77                 std::cout << "Graphical engine : Error in blitsurface in displayGfxText() " << SDL_GetError() << std::endl;
       78             }
       79         }
       80         else std::cout << "Graphical engine : Error during text render" << std::endl;
       81         delete textSurface;
       82     }
       83     else std::cout << "Graphical engine : Error in colorcode / fontcode for displayGfxText() " << std::endl;
       84 }

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ta surface doit être détruite avec SDL_FreeSurface, surtout pas avec delete. D'ailleurs tu as de la chance que ça ne crashe pas.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut
    Effectivement, le simple remplacement de delete par SDL_FreeSurface empeche totalement le programme de gonfler.

    Merci beaucoup pour la réponse (:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fuite de mémoire dans les appels imbriqués ?
    Par Linschn dans le forum Langage
    Réponses: 14
    Dernier message: 07/10/2009, 15h19
  2. Fuite de mémoire dans OpenCV
    Par Pg043 dans le forum OpenCV
    Réponses: 1
    Dernier message: 16/01/2009, 13h27
  3. Fuite de mémoire dans "gtk_widget_show" ?
    Par Ekinoks dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 18/06/2008, 13h00
  4. Réponses: 8
    Dernier message: 09/02/2007, 16h31
  5. Réponses: 19
    Dernier message: 04/10/2006, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo