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 :

Besoin d'aide erreur " Process returned -1073741819 (0xC0000005)"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Par défaut Besoin d'aide erreur " Process returned -1073741819 (0xC0000005)"
    Bonsoir à tous,

    Je suis tout nouveau et sollicite votre aide pour un projet étudiant que je mène.

    J'ai le droit à cette erreur : Process returned -1073741819 (0xC0000005) depuis ce matin...
    J'ai utilisé le debugger de Code::blocks qui me dit "Program received signal SIGSEGV, Segmentation fault."

    J'ai tout essayé, des pointeurs ? des tableaux ? Je ne vois pas ce qui pourrait ne pas aller.

    J'attends grandement votre aide.

    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    Il faut apprendre à utiliser le débogueur pour réussir à comprendre la source de l'erreur et donc, pouvoir la corriger.

    De notre côté, on ne pourra pas vous aider sans code. Aussi, grâce à au débogueur (à utiliser en compilant en debug) vous allez pouvoir nous dire sur quelle ligne le programme plante/s'arrête.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Salut,

    0xC0000005 et signal SIGSEGV sont bien la même erreur. Le plus souvent c'est dû à l'utilisation d'un pointeur mal initialisé, voire non initialisé! Si le débogueur t'indique l'erreur, il t'indique aussi à quel endroit elle s'est produite et quelle est la variable en faute; difficile d'avoir mieux. Il faut parfois ouvrir une fenêtre du débogueur appelée "call stack" pour mieux voir l’enchaînement d'actions qui a provoqué la défaillance.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Par défaut
    Merci de vos réponses.
    Alors effectivement la nuit fut assez courte pour moi, et après utilisation du debugger et analyse du code, j'ai enfin identifié le problème.
    Je vous expose le tout.
    Je lis mon fichier grâce a ma variable donnée.
    Cela dit, le crash a lieu lorsque donnée = 0 ( vous allez comprendre avec le code ).
    Ceci étant assimilé pour moi, je suis face à un problème vraiment farfelu, le code fonctionne avec un fichier txt, mais pas avec l'autre...et la j'ai craqué, je suis allé dormir...

    Voici le tout :

    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    #include "automate.h"
     
    using namespace std;
     
    ///REREGARDER LES ADRESSESETATS
     
    string intToString(int i)
    {
        ostringstream oss;
        oss << i;
        return oss.str();
    }
     
    Automate:: Automate(string _nom, bool &lu):nom(_nom)
    {
        ifstream fichier(nom.c_str());///nous ouvrons le fichier
     
        int donnee;
        int i = 0, j = 0;
        ascii = 97;
     
        if(fichier)
        {
            fichier >> donnee;///ici nous creons les donnees lu par l'automate
            for (i = 0; i < donnee; ++i)
            {
                alphabet.push_back(ascii);
                ascii ++;
            }
     
            fichier >> donnee;
            nbr_etat = donnee;
            for(i = 0; i < donnee; i++)
                adresseEtat.push_back(creationEtat(i + 1));
     
            fichier >> donnee;
            initialisionEntreSortie(fichier, donnee, adresseEtat, 0);
     
            fichier >> donnee;
            initialisionEntreSortie(fichier, donnee, adresseEtat, 1);
     
          ///ici nous recuperons les transitions
            fichier >> donnee;
            initialisationTransition(fichier, donnee, adresseEtat);/*///*/
     
            fichier.close();
            lu = true;
        }
        else
            cout << "nous n'avons pas reussi a ouvrir le fichier demander" << endl;
    }
     
    Automate::~Automate()
    {
        if(adresseEtat.size() >= 1)
        {
            for(int i = 0; i <= nbr_etat - 1; i++)///on supprime les etat apres utilisation
                delete adresseEtat[i];
        }
     
    }
     
     
     
    Etat* Automate:: creationEtat(int nom_etat)///création du maillon et initialisation
    {
        Etat* maillon = new Etat;
     
        maillon->nom = intToString (nom_etat);
        maillon->entre = 0;
        maillon->sortie = 0;
        maillon->nb_trans = 0;
     
        return maillon;
    }
     
    ///permet d'initialisation des entre et des sortie
    void Automate:: initialisionEntreSortie(ifstream &fichier, int tour, vector <Etat*>& adresseEtat, int choix)
    {
        int compteur = 0;
        int donnee = 0;
     
     
        for(compteur = 0; compteur <= tour - 1; compteur++)
        {
            fichier >> (donnee);
     
     
            if(choix == 0)///si on initialise une entree
            {
                adresseEtat[donnee - 1]->entre = 1;
                nbr_entre = tour;
            }
            else///si on initialise une sortie
            {
                adresseEtat[donnee - 1]->sortie = 1;
                nbr_sortie = tour;
            }
        }
     
    }
    Le debugger m'indique la ligne " adresseEtat[donnee - 1]->entre = 1;" , et en effet, donnée = 0.

    Nom : marchepas1.png
Affichages : 901
Taille : 63,4 Ko

    Mais avec un autre txt pratiquement identique, tout va bien :

    Nom : marche1.png
Affichages : 895
Taille : 61,9 Ko

    Je soupçonne naivement les "zéros 0" présents dans le txt non fonctionnel..?

    En espérant que vous puissiez m'aider.
    Merci d'avance et n’hésitez pas a me demander si quelque chose ne vous semble pas clair.

  5. #5
    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
    Forcément quand donnee vaut 0 ça crash... adresseEtat[donnee - 1] a aucune chance de fonctionner dans ce cas.
    Et la différence du fichier est plutôt limpide : tu as un 0 et non un 1 dans l'un d'eux. 0 qui se retrouve être la donnée.
    Donc soit ton code doit s'accomoder d'un 0 et tu fixes le code, soit ton fichier est daubé et tu fixes ton fichier.
    C'est quoi tous ces new et non std::unique_ptr ?
    Pourquoi faire une fonction pour réaliser 2 trucs entrées/sorties et non 2 fonctions ?
    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.

  6. #6
    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
    Au passage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int i = 0; i <= nbr_etat - 1; i++)
    Pourquoi faire simple quand on peut faire compliqué, hein?
    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.

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

Discussions similaires

  1. Besoin d'aide [erreur windows7]
    Par Lyoto dans le forum Sécurité
    Réponses: 0
    Dernier message: 01/04/2017, 14h05
  2. [XL-2007] Besoin d'aide erreur macro excel 2007
    Par nikkos29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/12/2010, 20h54
  3. Réponses: 3
    Dernier message: 16/11/2010, 11h16
  4. Réponses: 7
    Dernier message: 30/10/2005, 12h54
  5. Erreurs de link. Besoin d'aide.
    Par Sunsawe dans le forum MFC
    Réponses: 11
    Dernier message: 22/07/2005, 21h11

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