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 :

[fclose] erreur de fermeture (seg fault)


Sujet :

C

  1. #1
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut [fclose] erreur de fermeture (seg fault)
    Bonjour les gars, bon alors j'ai un petit porblème, là je fais un programme sous linux et dedans j'ouvre deux fichiers (ceci s'exécute sans aucun problème) l'un en mode lecture et l'autre écriture.
    Donc, à la fin quand je ferme les deux, le premier ne pose pas de problème mais le deuxième me rend un seg fault , de plus j'ai essayé d'écrire dedans et ca marche quand je quitte l'application je trouve qu'il a bien écrit c'est assez zarb.
    Bout de code (non compilable mais je suis sur que c'est pas un problème dans ce qui se trouve au dessus):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
           if ((src=fopen("cob.txt", "r")) == NULL){
              printf ("not found!\n");
               return H_ERROR;
               }
           if ((des=fopen("boc.txt", "w")) == NULL){
              printf ("can't create\n");
               return H_ERROR;
               }
    fputs ("goooooooundy", des);
     
    fclose (src);
    fclose (des);//seg fault
    ps: l'écriture de gooooondy c'est la seule action que j'éffectu sur le fichier des (qui pose problème ici)
    Merci
    Compil your life guy!
    The Aures Project

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: [fclose] erreur de fermeture (seg fault)
    Citation Envoyé par Goundy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fclose (des);//seg fault
    ps: l'écriture de gooooondy c'est la seule action que j'éffectu sur le fichier des (qui pose problème ici)
    Je ne vois pas d'erreur, mais ce codage est horrible. En cas d'erreur, on quitte en laissant tout en plan sans rien refermer... Il n'est pas difficile d'écrire du code qui suit exactement la logique de gestion des fichiers.
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void)
    {
       int err = 0;
       static const char fsrc[] = "cob.txt";
       static const char fdes[] = "boc.txt";
     
       FILE *src = fopen(fsrc, "r");
     
       if (src != NULL)
       {
          FILE *des = fopen(fdes, "w");
     
          if (des != NULL)
          {
             fputs ("goooooooundy\n", des);
             fclose (des), des = NULL;
          }
          else
          {
             perror (fdes);
             err = EXIT_FAILURE;
          }
          fclose (src), src = NULL;
       }
       else
       {
          perror (fsrc);
          err = EXIT_FAILURE;
       }
       return err;
    }
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Hi, merci emm
    Je ne pense pas que ca va changer grand chose, et puis pour quoi un seg fault lors d'une ferméture? quelles sont les raisons qui peuvent provoquer ceci?
    Compil your life guy!
    The Aures Project

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Goundy
    Je ne pense pas que ca va changer grand chose,
    Tu as essayé ? Parce que chez moi, ce code fonctionne...
    et puis pour quoi un seg fault lors d'une ferméture? quelles sont les raisons qui peuvent provoquer ceci?
    Par exemple :
    • Tu passes 0 à fclose()
    • Tu passes une valeur qui n'est pas celle qu'a donné le fopen().
    • Tu fermes un fichier déjà fermé...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par emm Del
    # Tu passes 0 à fclose()
    # Tu passes une valeur qui n'est pas celle qu'a donné le fopen().
    # Tu fermes un fichier déjà fermé...
    Je n'ai pas fais tout ca, je ferme le fichier une fois, je lui passe bien le descripteur retourné par fopen et qui n'est pas égal à 0.
    J'ai remis un peu mon code en ordre suivant tes instructions mais j'ai toujours le seg fault
    que pourrai-je faire?
    Compil your life guy!
    The Aures Project

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    que pourrai-je faire?
    Reposte le code corrigé. SI c'est une fonction compléte personnelle poste la peut etre qu'un détail t'a échappé plus bas ou plus haut...Comme cela difficile à dire quelque chose.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Goundy
    que pourrai-je faire?
    Ca peut être aussi une corruption mémoire telle qu'elle a endommagé le descripteur ou autre chose...
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Ce n'est guèrre une question de fonction personnelle, car je suis plutôt 100% open source , mais j'ai posté le code qui est susceptible d'être mauvais bon je reposte en mieux
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include "fonctions.h"
     
    int main(int argc, char **argv)
    {
      NOEUD             Table[MAX_CHAR];
      unsigned char     Set_Bit [8] = {128, 64, 32, 16, 8, 4, 2, 1};
      short    int      x;
      const char              sr[]="cob.txt";
      const char              de[]="boc.txt";
      char              k;
      NOEUD              root;
      NOEUD              elem;
      long int           frequence;
      FILE              *src,
                        *des;
     int a;
     
        usage ();
           if ((src=fopen(sr, "r")) == NULL){
              printf ("%s not found!\n", sr);
               return H_ERROR;
               }
            else
             if ((des=fopen(de, "w")) == NULL){
                printf ("can't create %s\n", de);
                 return H_ERROR;
                }
     
         if ((x = Alloc_Table (Table)) < 0){
            printf("Error Alloc_Table...\n");
             return H_ERROR;
            }
     
     
         frequence = Constrcut_Table (src, Table);
         printf("tri de la table ...\n");
         Sort_Table      (Table);
         printf("Done               [%d]\n", frequence);
     
     
        fputs ("goooooooundy", des);
     
          for (a=0; a<MAX_CHAR; a++)
           if (Table[a]->car >= 0)
            printf("%c <> %d\n", Table[a]->car, Table[a]->occur);
     
        printf("OK\n");
         //Free_Table (Table);
         fclose (src);
         src = NULL;
         fclose (des);
         des = NULL;
     
    	return H_DONE;
    }
    Voilà tout mon main.c mais sachez qu'à part le fputs il n' y a aucune fonction qui touche au fichier des, donc je ne vois pas pourquoi je dois poster tout le reste (si vous insistez il ny a aucun problème )
    Compil your life guy!
    The Aures Project

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Goundy
    Ce n'est guèrre une question de fonction personnelle, car je suis plutôt 100% open source , mais j'ai posté le code qui est susceptible d'être mauvais bon je reposte en mieux
    Ne compile pas. On ne peut tester efficacement que du code complet.
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Okay voilà tout mon source :
    main.c
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include "fonctions.h"
    int main(int argc, char **argv)
    {
      NOEUD             Table[MAX_CHAR];
      unsigned char     Set_Bit [8] = {128, 64, 32, 16, 8, 4, 2, 1};
      short    int      x;
      const char              sr[]="cob.txt";
      const char              de[]="boc.txt";
      char              k;
      NOEUD              root;
      NOEUD              elem;
      long int           frequence;
      FILE              *src,
                        *des;
     
        usage ();
     
           if ((src=fopen(sr, "r")) == NULL){
              printf ("%s not found!\n", sr);
               return H_ERROR;
               }
            else
             if ((des=fopen(de, "w")) == NULL){
                printf ("can't create %s\n", de);
                 return H_ERROR;
                }
     
         if ((x = Alloc_Table (Table)) < 0){
            printf("Error when mallocing the table...\n");
             return H_ERROR;
            }
     
     
         frequence = Constrcut_Table (src, Table);
         printf("tri de la table ...\n");
         Sort_Table      (Table);
         printf("Done               [%d]\n", frequence);
     
     
        fputs ("goooooooundy", des);
        /*  Création de l'arbre de huffman  */
     
     
         int a;
          for (a=0; a<MAX_CHAR; a++)
           if (Table[a]->car >= 0)
            printf("%c <> %d\n", Table[a]->car, Table[a]->occur);
     
        printf("OK\n");
         //Free_Table (Table);
         fclose (src);
         src = NULL;
         fclose (des);
         des = NULL;
     
    	return H_DONE;
    }
    fonction.h
    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
    #ifndef H_FONCTIONS
    #define H_FONCTIONS
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
    #define H_DONE         0
    #define H_ERROR       -1
    #define MAX_CHAR     255
     
    typedef struct{
       char   car;
       int           occur;
       struct NOEUD *R, *L;
        }*NOEUD;
     
     
    void usage              (void);
    int  Alloc_Table        (NOEUD tab[MAX_CHAR]);
    void Sort_Table         (NOEUD tab[MAX_CHAR]);
    int  Constrcut_Table    (FILE* src, NOEUD tab[MAX_CHAR]);
    void Check_Char         (char c, NOEUD tab[MAX_CHAR]);
    void Init_Noeud         (NOEUD n, unsigned char car);
    void Free_Table         (NOEUD tab[MAX_CHAR]);
    void Set_All_To_Zero    (NOEUD tab[MAX_CHAR]);
     
    #endif
    fonction.c
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    #include "fonctions.h"
     
    void usage (void){
      printf("usage: compress <option> <source> <destination>\n");
      printf("option:  -c    -----------------------    compress\n");
      printf("         -d    -----------------------    decompress\n");
        }
     
    void Sort_Table (NOEUD tab[MAX_CHAR]){
       int  count1,
            count2;
       NOEUD tmp;
     
         for (count1 = 0; count1 < MAX_CHAR; count1++)
           for (count2 = 0; count2 < (MAX_CHAR-1); count2++)
             if (tab[count2]->occur > tab[(count2+1)]->occur){
                tmp = tab[count2];
                tab[count2] = tab[(count2+1)];
                tab[(count2+1)] = tmp;
                 }
        }
     
    void Check_Char (char c, NOEUD tab[MAX_CHAR]){
       int count;
     
         for (count=0; count<MAX_CHAR; count++){
           if (tab[count]->car == -1){
             tab[count]->car = c;
             tab[count]->occur = 1;
              break;
             }
            else
              if (tab[count]->car == c){
                 tab[count]->occur++;
                  break;
                 }
           }
        }
     
    void Set_All_To_Zero (NOEUD tab[MAX_CHAR]){
       int count;
     
        for (count=0; count<MAX_CHAR; count++){
           tab[count]->car = -1;
           tab[count]->R   = NULL;
           tab[count]->L   = NULL;
            }
        }
     
    int Constrcut_Table (FILE* src, NOEUD tab[MAX_CHAR]){
        int count1;
        char c;
        long int freq = 0;
     
         printf("Construction de la table ...");
         freq = 0;
         Set_All_To_Zero (tab);
     
          while ((c=fgetc(src)) != EOF){
             Check_Char (c, tab);
             freq++;
              }
          printf("Done\n");
          return freq;
        }
     
    int Alloc_Table(NOEUD *tab){
       int count;
     
        for (count=0; count<MAX_CHAR; count++){
          tab[count] = malloc (sizeof(NOEUD*));
           if (tab == NULL) return H_ERROR;
         }
          return H_DONE;
        }
     
    void Free_Table         (NOEUD tab[MAX_CHAR]){
       int count;
     
         for (count=0; count<MAX_CHAR; count++)
          free (tab[count]);
        }
     
    /******************************************************************************/
    /*                         fonctions de l'arbre                               */
    /******************************************************************************/
     
    void Init_Noeud (NOEUD n, unsigned char car){
     
        n->car = car;
        n->R   = NULL;
        n->L   = NULL;
        }
    Merci
    Compil your life guy!
    The Aures Project

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    le main.c lors de la férmeture de des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fclose(des); //------> rend un seg fault
    Compil your life guy!
    The Aures Project

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Goundy
    le main.c lors de la férmeture de des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fclose(des); //------> rend un seg fault
    Non. Le fichier de données (cob.txt), y'a quoi dedans ?
    Pas de Wi-Fi à la maison : CPL

  14. #14
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Non. Le fichier de données (cob.txt), y'a quoi dedans ?
    Il y'a une bête phrase du style Goundy it's me ou truc du genre ^_^
    Bon monsieur, là tu m'as corrigé mon code en plus clair ok mais dois-je le prendre? si je fais ca donc de mon côté j'ai pas fait d'efforts, je donne une source mal organisée et quelqu'un d'autre me la remet en ordre je pense que j'avancerai jamais comme ca ...
    De toute facon je vais bien relire vos corrections pour ne pas le refaire à présent, mais j'aimerai quand même savoir pourquoi est-ce que dans mon code j'ai le seg fault lors de la fermeture?

    Merci encore

    edit:
    emm j'aime bien le zero zero dans les liens lol


    edit2:
    Sous windows j'ai pas le seg fault
    Compil your life guy!
    The Aures Project

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Goundy
    Sous windows j'ai pas le seg fault
    Ok, j'essaye sous Linux. ... RAS.
    Pas de Wi-Fi à la maison : CPL

  16. #16
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Bonjour, bon un pote m'a aidé hier avec ce seg fault et en fait il ne provient pas du fclose (même s'il survient lors de ce dernier) mais il y a un gros problème dans mon code, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct {
       char   car;
       int           occur;
       struct NOEUD *R, *L;
        }*NOEUD;
    Et quand j'alloue je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[count] = malloc (sizeof(struct NOEUD));
    ainsi je n'alloue que de la mémoire pour le pointeur et non pas pour la structure (quel boulet!)
    donc il faut que je fasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct NOEUD{
       char   car;
       int           occur;
       struct NOEUD *R, *L;
        }*NOEUD;
    et pour l'allocation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[count] = malloc (sizeof(struct NOEUD));
    Maintenant je n'ai plus l'erreur de segmentation
    Merci à tous pour votre participation
    Compil your life guy!
    The Aures Project

  17. #17
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Bonjour, bon un pote m'a aidé hier avec ce seg fault et en fait il ne provient pas du fclose
    Je m'en doutais, c'est généralement le cas des allocations mémoire. En effet, il arrive de nombreux cas où on obtient un segfault lors d'un vulgaire printf. Or dans 99.9 % des cas, le problème vient d'ailleur, et généralement d'une allocation (ou la non-allocation) de mémoire.

  18. #18
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Ouais et ca craint trop les seg lol, de plus le debugger de C::B n'est pas terrible (à moins que je ne sache pas utiliser un debugger correctement ^^)
    Bon heureusement que mon problème a été résolu mais merci à vous tous pour vos conseils
    Compil your life guy!
    The Aures Project

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur incompréhensible.. (seg. fault)
    Par adrienmgs dans le forum Débuter
    Réponses: 3
    Dernier message: 24/02/2011, 10h56
  2. Seg Fault sur un fclose
    Par XstasY dans le forum Débuter
    Réponses: 8
    Dernier message: 31/03/2010, 00h11
  3. [ERREUR D'EXECUTION] Segmentation Fault
    Par CestPasMoi dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 17h38
  4. Erreur en fermeture ? D'où cela peut venir
    Par BXDSPORT dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 22h26
  5. gestion d'erreur et fermeture recordset
    Par yorra dans le forum Access
    Réponses: 4
    Dernier message: 14/11/2004, 11h38

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