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

Langage C++ Discussion :

Segmentation fault ?


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    IRIS, ATS, 3IL Rodez
    Inscrit en
    Juin 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : IRIS, ATS, 3IL Rodez

    Informations forums :
    Inscription : Juin 2014
    Messages : 27
    Par défaut Segmentation fault ?
    Salut,

    J'aimerai comprendre, si le message "segmentation fault" signifie bien ici que j'ai débordé quelque part dans la mémoire, parce que je ne vois pas où...

    Je suis sur Cloud9, un environnement de dév Web.

    https://chrome.google.com/webstore/d...mcpnamfnbkmkcp

    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
    #include <iostream>
     
     
    void fonction_ONE(int* tab, int size){
     
        for(int index=1; index<=size; index++){
            tab[index]=0;
            printf("%d",tab[index]);
        }
            printf("\n");
    }
     
    void fonction_TWO(int tab[][5], int size){
     
        for(int X=1; X<=size; X++){
            for(int Y=1; Y<=size; Y++){
                tab[X][Y]=0;
                printf("%d",tab[X][Y]);
            }
            printf("\n");
        }
     
    }
     
    int main(){
     
        int grid[5];
        int matrice[5][5];
     
        //fonction_ONE(grid,5);
        fonction_TWO(matrice, 5);
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Running /home/ubuntu/workspace/ultra.cc
    00000
    00000
    00000
    00000
    00000
    bash: line 12: 10123 Segmentation fault      $file.o $args
     
     
    Process exited with code: 139

    Bien à vous,

    Ragoudcep.


    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void fonction_TWO(int tab[][5], int size){
     
        for(int X=1; X<=size-1; X++){
            for(int Y=1; Y<=size-1; Y++){
                tab[X][Y]=0;
                printf("%d",tab[X][Y]);
            }
            printf("\n");
        }
     
    }
    Comme disait George.B, "quand on est c..., on est c... !!!" ^^' Navré du dérangement !

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pourquoi pars-tu de 1?

    Habituellement, ce qu'on fait, c'est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void fonction_ONE(int* tab, int size){
     
        for(int index=0; index<size; index++){
            tab[index]=0;
            printf("%d",tab[index]);
        }
            printf("\n");
    }
    Edit: Et en C++ moderne, on utilise un vector<> ou un array<> plutôt qu'un tableau nu.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    première ligne je vois un tableau parcouru de 1 à size inclus
    première chose qu'on est sensé apprendre en C++, et valable dans la grosse majorité des langages, est qu'un tableau de X éléments s'itère de 0 à X-1 inclus
    pas besoin de chercher plus loin la segfault imo
    btw le debugger devrait s'arrêter sur la ligne du segfault en question normalement, ne lances-tu pas le programme dans le debugger ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Pb segmentation fault avec glutinit()
    Par pipistrelle dans le forum GLUT
    Réponses: 2
    Dernier message: 17/11/2004, 23h17
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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