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 :

erreur : "glibc detected" à l'exécution


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut erreur : "glibc detected" à l'exécution
    Bonjour à tous,

    J'obtiens une erreur (que je n'avais jamais vue) lorsque je fais appel à une fonction d'affichage. Cette erreur a lieu lors de l'exécution, pas lors de la compilation.
    Voici une partie de l'erreur :

    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
     
    *** glibc detected *** ./projet: free(): invalid pointer: 0x0804e9ac ***
    ======= Backtrace: =========
    /lib/libc.so.6[0x2147e4]
    /lib/libc.so.6(cfree+0x96)[0x216846]
    /usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x340a461]
    /usr/lib/libstdc++.so.6(_ZNSs4_Rep10_M_destroyERKSaIcE+0x1d)[0x33e62cd]
    /usr/lib/libstdc++.so.6(_ZNSsD1Ev+0x63)[0x33e7b33]
    ./projet[0x8049d0a]
    ./projet[0x8049d9f]
    ./projet[0x8049ecd]
    ./projet[0x8049f41]
    ./projet[0x8049371]
    ./projet[0x804be68]
    /lib/libc.so.6(__libc_start_main+0xe6)[0x1bd5d6]
    ./projet(__gxx_personality_v0+0x5d)[0x8048e31]
    ======= Memory map: ========
    00110000-00111000 r-xp 00110000 00:00 0          [vdso]
    00187000-001a3000 r-xp 00000000 08:03 22532      /lib/ld-2.8.so
    001a3000-001a4000 r--p 0001c000 08:03 22532      /lib/ld-2.8.so
    001a4000-001a5000 rw-p 0001d000 08:03 22532      /lib/ld-2.8.so
    001a7000-0030a000 r-xp 00000000 08:03 22538      /lib/libc-2.8.so
    0030a000-0030c000 r--p 00163000 08:03 22538      /lib/libc-2.8.so
    0030c000-0030d000 rw-p 00165000 08:03 22538      /lib/libc-2.8.so
    0030d000-00310000 rw-p 0030d000 00:00 0
    Et voici la fonction en question :

    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
     
    void stafflist::PrintStaffList(){ //lecture de 4 mots dans un fichier
     
    ifstream fichier( "staff.txt" );
     
        if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
        {
    	int var1; 
    	string var2;
    	string var3;
    	string var4;
    	fichier >> var1 >> var2 >> var3 >> var4; 
    	fichier.close();  
        }
        else  
    	cout << "Impossible d'ouvrir le fichier !" << endl;
     
        }
    Pouvez-vous me dire ce que signifie cette erreur? Il est question de pointeur, mais je n'en utilise pas ...

  2. #2
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Bonjour à toi,

    Chez moi ça marche :
    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
     
    #include <fstream>
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
    	ifstream fichier( "staff.txt" );
     
        if(fichier) // ce test échoue si le fichier n'est pas ouvert
        {
    		int var1; 
    		string var2;
    		string var3;
    		string var4;
    		fichier >> var1 >> var2 >> var3 >> var4;
     
    		cout << var1 << " " << var2 << " " << var3 << " " << var4 << endl;
     
    		fichier.close();  
        }
        else
    	{
    		cout << "Impossible d'ouvrir le fichier !" << endl;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    florian@flobox:~/Développement/test$ cat staff.txt 
    998 auiee auuuuaie ei
    florian@flobox:~/Développement/test$ g++ main.cpp
    florian@flobox:~/Développement/test$ ./a.out 
    998 auiee auuuuaie ei
    florian@flobox:~/Développement/test$
    Le problème doit venir d'ailleurs…
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut
    ok, merci!
    J'ai regardé ailleurs, et j'avais un problème quand je choisissais d'afficher ma liste. L'erreur a disparue, mais ma fonction ne marche toujours pas chez moi et maintenant j'obtiens des erreurs à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    stafflist.cc: In member function ‘void stafflist::PrintStaffList()’:
    stafflist.cc:110: erreur: no match foroperator>>’ in ‘fichier.std::basic_ifstream<char, std::char_traits<char> >::<anonymous>.std::basic_istream<_CharT, _Traits>::operator>> [with _CharT = char, _Traits = std::char_traits<char>](((int&)(& var1))) >> ""’
    /usr/lib/gcc/i386-redhat-linux/4.3.0/../../../../include/c++/4.3.0/istream:123: note: candidats sont: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>& (*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
    D'où cela peut-il venir?
    J'appelle ma fonction ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stafflistobject.PrintStaffList();
    où stafflistobject est un objet de la classe stafflist

  4. #4
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    L'erreur ne vient pas de la façon dont tu appelles ta fonction, mais du contenu de la fonction elle-même !
    Plus précisément, l'erreur se trouve à la ligne 110 du fichier stafflist.cc. À quoi cela correspond-il ?
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut
    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
     
    void stafflist::PrintStaffList(){
     
    cout<<"12\n";
    ifstream fichier( "staff.txt" );
    cout<<"0";
        if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
        {
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            //while (getline( fichier, line ) )
            //{
    	cout<<"1";
    	int var1; 
    	string var2;
    	string var3;
    	string var4;
    	//string line;
    	fichier >> var1 >> "">> var2 >>"" >>var3 >> "">>var4; ////ligne 110/////
                // afficher la ligne à l'écran
            //std::cout << line << std::endl;
    	//staff personneajouter(var1,var2,var3,var4);
    	//mylistofstaff.push_back(personneajouter);
           // }
    	fichier.close();  
        }
        else  
    	{cout << "Impossible d'ouvrir le fichier !" << endl;}
     
     }

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est quoi les "" qui se baladent ? Comment veux-tu mettre un résultat dans un chaîne de caractères constantes ?

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

Discussions similaires

  1. Erreur : glibc detected
    Par L8O8L dans le forum C
    Réponses: 3
    Dernier message: 04/03/2008, 07h22
  2. erreur glibc detected double free or corruption.
    Par Screwt-K dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2007, 16h46

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