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 :

probleme de memoire


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 114
    Par défaut probleme de memoire
    le code suivant est-il bon pour la memoire? En fait je voudrais si a la fin du programme, la destruction du pointeur *ps me garanti qu'il n'y a pas de memory leak?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void Initialize()
    {
        ps = new CSmoke(CVector(0,0,0), LoadTextureWithAlphaMask("particle.bmp", "particle.bmp"));
        ps->Initialize();
        //delete ps;
    }

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    Si tu fais à la fin du programme delete ps cela suffit car CVector(0,0,0) est comme une variable locale déclarée sur la pile et non un pointeur déclaré sur le "tas" ( ou heap en anglais ) .
    Cela revient à déclarer :
    CVector vect(0,0,0);
    ps = new CSmoke(vect, LoadTextureWithAlphaMask("particle.bmp", "particle.bmp"));
    ps->Initialize();
    //....
    delete ps;
    ps=NULL;
    Il faut voir si la texture chargée avec LoadTextureWithAlphaMask est bien effacée après

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 114
    Par défaut probleme de gestion memoire
    mais il y a appel recursif dans la definition de ps, puisque ps fait d'abord un new puis un appel a la fonction qui l'a permis d'avoir de la memoire sur le heap

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Pourquoi tu déclares pas ton CSmoke sur la pile ?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 114
    Par défaut probleme de gestion memoire
    parce qu'il va utiliser de la memoire dynamique.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Et ?


    Au fait, si ta fonction initialise ne réalise pas de la post-construction polymorphique, elle n'a pas à exister. Oui, j'ai une dent contre ce genre de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    T * p = new T();
    p -> init("toto", 42); // lève une exception
    code quelconque...
    delete p;
    alors que le rôle des constructeurs est ... de construire les objets pour les amener dans un état valide et exploitable.

    PS: il n'y a pas que la mémoire qui peut fuir. Les OS savent récupérer la mémoire non désallouée, mais pas les autres ressources. Du coup, certains constructeurs ne doivent en aucun cas être oubliés.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Problème de mémoire (définitions)
    Par aline dans le forum Administration système
    Réponses: 1
    Dernier message: 13/03/2006, 23h38
  2. probleme de mémoire?
    Par dams78 dans le forum GTK+ avec C & C++
    Réponses: 12
    Dernier message: 24/02/2006, 13h52
  3. [VC++6] probleme fuite memoire CLIST ?
    Par athilla dans le forum MFC
    Réponses: 16
    Dernier message: 22/11/2005, 16h01
  4. [langage] Problème de mémoire
    Par And_the_problem_is dans le forum Langage
    Réponses: 6
    Dernier message: 22/07/2003, 16h17
  5. [swing] probleme de memoire
    Par leBigouden dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/05/2003, 14h19

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