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 :

pb avec mon free


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut pb avec mon free
    Bonjour, voici le code suivant :

    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
     
    FILE * file=NULL;
        double d;
        char line[10000];
        for(i=0;i<Z;++i)
        {
          if(i==0) file=fopen("../Outputs/Particle1.txt","r");
          else if(i==1) file=fopen("../Outputs/Particle2.txt","r");
          else file=fopen("../Outputs/Particle3.txt","r");
          for(j=0;j<3;++j) fgets(line,sizeof(line),file);
          char *p=strdup(line);
          d=strtod(p,&p); d=strtod(p,&p);
          NV_Ith_S(y,(i+1)*mec->ns+i)=strtod(p,&p);
          for(j=0;j<mec->ns;++j) NV_Ith_S(y,i*(mec->ns+1)+j)=strtod(p,&p);
          fclose(file);
          free(p); p=NULL;
        }
    ce code compile mais lors de l'exécution il plante à la ligne
    Savez-vous pourquoi ?
    Merci.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    free() doit recevoir exactement la valeur retournee par malloc() [ou strdup(), dans ton cas]. Et tu modifies cette valeur via l'appel a strtod()...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    OK je comprends.
    Et comment libérer la mémoire dans mon cas ?

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Tu dois modifier ton code pour la valeur de p ne soit pas modifiee entre strdup() et free(). Donc, utilise une autre variable en deuxieme argument strtod().

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Et plus simple : j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * p=strdup(line);
    par

    ce qui fait que je n'ai plus besoin de free(p);
    Est-ce correct ?

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par salseropom
    Et plus simple : j'ai remplacé
    par
    ce qui fait que je n'ai plus besoin de free(p);
    Est-ce correct ?
    Si tu n'as pas besoin de copie, oui.

Discussions similaires

  1. Utiliser un nom de domaine avec mon serveur Free.
    Par Sov Strochnis dans le forum Domaines
    Réponses: 1
    Dernier message: 04/12/2012, 12h45
  2. [MySQL] connexion avec mon serveur mysql sur free.fr
    Par verdenals dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/01/2010, 19h32
  3. envoyer un mail avec mon programme
    Par shrek dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/12/2006, 12h27
  4. Réponses: 13
    Dernier message: 26/04/2004, 19h32
  5. Problème avec mon firewall ...
    Par Wis dans le forum Tomcat et TomEE
    Réponses: 15
    Dernier message: 06/04/2004, 08h46

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