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 libxml besoin d'aide SVP


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut probleme libxml besoin d'aide SVP
    Bonjour ,

    Voila, j’ai développé un programme utilisant libxml2 (j’utilise Windows, libxml2.dll etc.…) mais lorsque que je lance ce programme et que je regarde la mémoire utilisées, elle augmente mais ne baisse jamais donc mon programme « fuit », j’ai cherché et j’ai localisé la fuite mais le souci c’est que je ne vois pas comment régler se problème car il vient de l’utilisation de libxml.

    Donc voici la partie du code qui permet de récupérer tout les nœuds enfant pour chaque nœud « Document » trouvés.
    Déjà pouvez-vous me dire si, ma façon de procéder pour lister les nœuds enfants est correcte car j’ai trouvé que ça, pour lister pour chaque nœud parent, tous leurs nœuds enfants.
    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
    //voici la portion de mon code qui fuit
     
    xpathRes = xmlXPathEvalExpression("/LOT/DOCUMENT", ctxt); // récupere tout les noeud documents
    char ttt[90];
    char tableauNom[10000][50];
    // Manipulation du résultat
    if (xpathRes->type == XPATH_NODESET) {      
       for (i = 0; i < xpathRes->nodesetval->nodeNr; i++) { 
           xmlNodePtr n = xpathRes->nodesetval->nodeTab[i]; // les noeuds sont dans la varible n   
           if (atoi( xmlGetProp(n, "NBImg")) != 0){
                 for( j = 0 ; j<atoi( xmlGetProp(n, "NBImg")) ; j++){       
     
                        strcpy (ttt, ""  );
                        strcat(ttt, repertoireArrive  );
                        strcat(ttt, "/" );
                        strcat(ttt, fichier );
                        strcat(ttt, "/" );
                        strcat(ttt, xmlGetProp(n->children, "Nom") );
                        strcpy(tableauNom[j],ttt);
     
                        n->children = n->children->next;
     
                  }
                    strcpy(Nomfichier , LienRepertoireSortie );
                    strcat(Nomfichier , "/"); 
                    sprintf(nom,"%d",i);          
                    strcat(Nomfichier , nom);      
                    strcat(Nomfichier , ".tif"); 
         }
       }
     }
    //libéraTTTTION  del memoire 
    xmlXPathFreeContext(ctxt);
    xmlXPathFreeObject(xpathRes);
    xmlFreeDoc(doc);
    SVP j'ai vraiment besoin d'aide sur ce coup car je suis perdu avec cette fuite mémoire

  2. #2
    Membre expérimenté Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par défaut
    Quel version de libxml2 ?

    Si tu fais une boucle for qui répète 1000 fois ce code, la mémoire utilisée est-elle multipliée par 1000 ?

    PS: si tu permets, quelques conseils stylistiques:
    - tu ne pourrais pas transformer tes strcpy/strcat par un sprintf ?
    - je trouve strcpy (ttt, "" ); assez moche !
    - ttt n'est pas très parlant comme variable...
    - je trouve la pré-incrémentation moins ambiguë que la post (dans les boucles for)

  3. #3
    Membre expérimenté Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par défaut
    C'est bizarre de libérer le contexte avant l'objet XPath...
    Essaie d'inverser les 2 appels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    xmlXPathFreeObject(xpathRes);
    xmlXPathFreeContext(ctxt);
    xmlFreeDoc(doc);

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2007, 07h50
  2. Encapsulation, besoin d'aide svp
    Par 3xplo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/02/2007, 14h52
  3. besoin d'aide SVP
    Par geulmim dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/04/2006, 10h01
  4. Réponses: 5
    Dernier message: 21/01/2006, 23h24

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