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 :

Liste chain� et fuite m�moire


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Par d�faut Liste chain� et fuite m�moire
    Bonjour,

    J'ai cr�e une class qui fais un liste doublement chain�. Cette classe est en faite un monstre pour un jeu. J'ai une boucle principal de jeu qui affiche les monstres. Mais j'ai une fuite m�moire (quand je fais ctrl+alt+suppr je remarque que l'espace m�moire grandi au fur et � mesure.

    J'ai essay� pas mal de m�thode mais sans r�sultat.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void Cmonstre::afficher(SDL_Surface *surface)
    {
    	Cmonstre *monstre = new Cmonstre(this->fichier,this->tileH,this->tileL,this->positionX,this->positionY);
    	*monstre = *this->suivant;
    	this->image->afficher(surface,this->numeroImage,this->positionX, this->positionY);
    	while(monstre->suivant != NULL)
    	{
    		monstre->image->afficher(surface,monstre->numeroImage,monstre->positionX, monstre->positionY);
    		*monstre = *monstre->suivant;
    	}
    	delete monstre;
    }
    Je comprend pas d'ou peut venir le probl�me, je d�truit bien l'objet � la fin et je fais pas de copie...

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par poussinphp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    	*monstre = *this->suivant;
    je fais pas de copie...
    L� tu ne fais pas une affectation de pointeurs, mais une affectation d'objets. Si tu veux �tre certain de ne pas faire de copie, d�clare priv�s, sans les d�finir, les constructeurs de copie et op�rateurs d'affectation de ta classe.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    A chaque fois que tu dois afficher un monstre (donc des dizaines de fois par seconde) tu en alloue un nouveau dynamiquement, tu y recopies ton monstre original, et pour finir ton monstre affiche les autres monstres qui lui sont reli�s

    Parfois on se demande comment les gens en arrivent � des trucs aussi tordus

    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
    class Cmonstre
    {
    public :
     
        void Afficher()
        {
            image->afficher(surface, numeroImage, positionX, positionY);
        }
    };
     
    std::list<Cmonstre> Monstres;
    for (std::list<Cmonstre>::iterator It = Monstres.begin(); It != Monstres.end(); ++It)
    {
        It->Afficher();
    }

Discussions similaires

  1. Liste chain�e en m�moire partag�e
    Par drogeek dans le forum C
    R�ponses: 2
    Dernier message: 21/05/2013, 07h13
  2. Fuite m�moire liste doublement cha�n�e
    Par Melanie_Flower dans le forum D�buter
    R�ponses: 4
    Dernier message: 14/03/2012, 16h07
  3. Listes Chain�es et lib�ration m�moire?
    Par alexglvr dans le forum D�buter
    R�ponses: 16
    Dernier message: 19/01/2011, 12h14
  4. m�moire et liste chain�e?
    Par tintin72 dans le forum C++
    R�ponses: 17
    Dernier message: 17/12/2005, 20h54
  5. R�ponses: 24
    Dernier message: 30/10/2005, 09h27

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