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

SL & STL C++ Discussion :

Problème de mémoire


Sujet :

SL & STL C++

  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut Problème de mémoire
    Bonjour,

    J'ai une application avec un boite de dialogue, avec un bouton dont l'evenement click lance un thread avec createThread qui appel une fonction traitement.

    Le problème ce que la fonction traitement contient plusieurs fuites mémoire (si je fait un delete ou un free il crash).
    Est-ce qu'il y a un truc (comme grabge collecteur en java) pour libérer tout le mémoire de la fonction traitement a la fin de l'execusion du thread?

    Merci pour vos réponses

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bonjour,
    non il n'y as pas de garbage collector.
    Par contre il y as beaucoup de class (vector ....) qui implement la gestions de la memoire nomé RAII
    deux liens sur la FAQ
    http://cpp.developpez.com/faq/cpp/?p...POINTEURS_raii

    http://cpp.developpez.com/faq/cpp/?page=pointeurs

  3. #3
    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 : 50
    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
    Il n'y a pas de garbage collector par défaut, mais il est possible d'en ajouter un, voir par exemple http://www.hpl.hp.com/personal/Hans_Boehm/gc/

    Il y a aussi des outils pour te faciliter la vie, sans pour autant que ce soit un garbage collector, comme les pointeurs intelligents (boost::shared_ptr, par exemple).
    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.

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Par défaut
    Le fait que le programme plante suite à un delete n'est pas normal, il y a forcément un problème au niveau de tes allocations. Vérifies si tu alloues siffisement de mémoire...

  5. #5
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    La mémoire que ton thread libère avec l'instruction delete est-elle allouée depuis ton thread ? depuis l'extérieur ?
    Il n'y aurait pas d'autre thread qui accéde à la même zone mémoire ? ça expliquerais pourquoi ton programe plante.

    D'ailleur, quel est le message d'erreur aprés le plantage?

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut
    Aussi, est-ce que tu modifie la valeur des pointeurs
    par exemple sur un tableau, le delete ou le free se fait sur la tête du tableau.
    si tu itères dessus en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    char * tab = new char[3];
     
    for(char a=0; a < 3; a++, tab ++)
    {
    *tab = a;
    }
     
    delete tab;
    ça plantera parce que tab ne contient plus la tête du tableau. Donc tu essaierai de libérer un espace non alloué.

Discussions similaires

  1. [WORD]Problème de mémoire
    Par Dnx dans le forum VBA Word
    Réponses: 17
    Dernier message: 05/10/2005, 14h48
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [Crystal Report]Problème de mémoire avec le moteur RDC
    Par sur_uix dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/05/2005, 09h09
  4. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  5. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06

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