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 de segmentation


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 49
    Points : 155
    Points
    155
    Par défaut Erreur de segmentation
    Bonjour, j'utilise la librairie curl avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    printf("Je suis dans postForm\n");
    CURL *easyhandle = NULL;
    printf("ok %s %d %s\n",__FILE__,__LINE__,__FUNCTION__ );
    assert(easyhandle==NULL);
    easyhandle = curl_easy_init();
    assert(easyhandle!=NULL);
    printf("Initialisation terminée\n");
    pour info, le prototype de curl_easy_init est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CURL *curl_easy_init().
    Or, quand je l'execute, il affiche le message de printf puis:

    Erreur de segmentation

    Pourquoi?

    Merci d'avance pour vos réponses

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    bonjour

    Tu ne peux pas te baser sur tes printfs à cause du buffer de sortie. En gros quand le programme passe sur un printf, il met son contenu dans le buffer de sortie et c'est seulement quand celui ci est plein que tout est affiché à l'écran.
    Il faut mettre l'instruction fflush( stdout ); après chaque printf pour forcer le buffer de sortie à se vider et savoir réellement òu est l'erreur.

    Moi je ne connais pas cette librairie et je ne comprend pas trop ce que tu essaie de faire. As tu esayé de recompiler avec l'option -g et de lancer le débugger pour connaitre la ligne de l'erreur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -g -Wall -o monProg monProg.c
    gdb monProg
    run
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Aldian Voir le message
    bonjour

    Tu ne peux pas te baser sur tes printfs à cause du buffer de sortie. En gros quand le programme passe sur un printf, il met son contenu dans le buffer de sortie et c'est seulement quand celui ci est plein que tout est affiché à l'écran.
    Il faut mettre l'instruction fflush( stdout ); après chaque printf pour forcer le buffer de sortie à se vider et savoir réellement òu est l'erreur.
    Non non dans ce cas c'est bon, il y a le caractère newline, qui provoque le fflush automatiquement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  4. #4
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par kurk49 Voir le message
    Bonjour, j'utilise la librairie curl avec le code suivant:

    printf("Je suis dans postForm\n");
    CURL *easyhandle = NULL;
    printf("ok %s %d %s\n",__FILE__,__LINE__,__FUNCTION__ );
    assert(easyhandle==NULL);
    easyhandle = curl_easy_init();
    assert(easyhandle!=NULL);
    printf("Initialisation terminée\n");

    pour info, le prototype de curl_easy_init est
    CURL *curl_easy_init().
    Or, quand je l'execute, il affiche le message de printf puis:

    Erreur de segmentation

    Pourquoi?

    Merci d'avance pour vos réponses
    Poste un code qui compile et dans les balises CODE prévues à cet effet.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    ok. autant pour moi. merci de la précision.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    De rien, voilà le passage dans la norme :
    3 When a stream is unbuffered, characters are intended to appear from the source or at the
    destination as soon as possible. Otherwise characters may be accumulated and
    transmitted to or from the host environment as a block. When a stream is fully buffered,
    characters are intended to be transmitted to or from the host environment as a block when
    a buffer is filled. When a stream is line buffered, characters are intended to be
    transmitted to or from the host environment as a block when a new-line character is
    encountered. Furthermore, characters are intended to be transmitted as a block to the host
    environment when a buffer is filled, when input is requested on an unbuffered stream, or
    when input is requested on a line buffered stream that requires the transmission of
    characters from the host environment. Support for these characteristics is
    implementation-defined, and may be affected via the setbuf and setvbuf functions.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    ok. autant pour moi. merci de la précision.

    edit: mais ce n'est pas ce que l'on comprend en lisant la doc. Cf
    http://www.cppreference.com/stdio/fflush.html


    2ème edit (chuis pas doué dsl) bon l'exemple de ma doc devait être mal ficelé alors.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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