Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur bizzare lors de la compilation

Sujet résolu
    11 juin 2022 à 15:32:54

    Bonjour à tous

    J'ai eu cette erreur bizarre en compilant mon code(1) sur VsCode

    Mon code (1)

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
        int main(int argc, char *argv[]) {
    
            int tableau[5];
    
            for (int i = 0; i < 5 ; i++){
                tableau[i] = i + 1;
                printf("%d", tableau[i]);
            }
    
            return 0;
        }
    
    


    L'erreur (2)

    *** stack smashing detected ***: terminated
    Abandon (core dumped)

    J'ai chercher sur google mais j'ai l'impression que c'est au cas par cas / ou que cette erreur intervient lorsque que le compilateur est mal configuré

    Merci de votre aide

    -
    Edité par Nurvenco 11 juin 2022 à 15:34:19

    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2022 à 16:18:46

      Je pense que c'est ton compilateur, ton code fonctionne très bien chez moi.
      • Partager sur Facebook
      • Partager sur Twitter
        11 juin 2022 à 16:56:28

        L'erreur n'est pas intuitive je ne comprend pas ce qu'elle veut dire.

        J'ai lu sur un forum que le compilateur pouvais être configuré comment faire ?

        • Partager sur Facebook
        • Partager sur Twitter
          11 juin 2022 à 17:03:32

          Tu compiles avec quelle(s) option(s) ?
          • Partager sur Facebook
          • Partager sur Twitter
            11 juin 2022 à 17:17:00

            Je compile avec la commande:

            cgg main.c -o main

            Puis j'execute mon code avec

            ./main

            Je suis en train de faire des exercices sur les tableaux et c'est ce code qui a en premier provoqué le code d'erreur,je peut maintenant le compiler sans erreur mais si je rendre un valeur supérieur a 20 ou inférieur à 0 il me met le ce code.

            #include <stdio.h>
            #include <stdlib.h>
             
                int main(int argc, char *argv[]) {
             
                    int tableau[] = {};
                    int i = 0;
            
                    do {
                        
                        i++;
                        printf("Donne moi ta note\n");
                        scanf("%d", &tableau[i]);
                        printf("%d", tableau[i]);
                    } while (tableau[i] >= 0 && tableau[i] <= 20 ); 
            
                    for (int a = 0; a < i; a++) {
                        printf("%d\n", tableau[a]);
                    }
            
                    printf("Fin du programme\n");
                    return 0;
                }


            Après avoir mis vsCode à jour j'ai pu compiler et exécuter sans problème

            Excuser moi si je suis pas précis c'est pas mon fort :-°

            -
            Edité par Nurvenco 11 juin 2022 à 17:46:54

            • Partager sur Facebook
            • Partager sur Twitter
              11 juin 2022 à 18:01:06

              Tu ne déclares aucune dimension pour ton tableau, il est donc de dimension 0.
              Tu l'avais déclaré de dimension 5 au début.
              Si ça marche jusqu'à 20, c'est par chance car tu détruis des choses.
              Déclares le tableau de dimension 1000 par exemple et tu pourras aller plus loin.
              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                11 juin 2022 à 18:02:07

                Pour ton dernier code, c'est normal que ça plante ! Tu as un tableau de taille 0 ! Tu ne peux donc rien y mettre !
                • Partager sur Facebook
                • Partager sur Twitter
                ...
                  11 juin 2022 à 18:14:23

                  Je viens d'essayer et il ne me retourne plus le message d'erreur

                  Merci à vous !

                  -
                  Edité par Nurvenco 11 juin 2022 à 18:17:22

                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 juin 2022 à 18:49:33

                    Ok pour le second code, mais pourquoi cette erreur pour celui du premier message ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 juin 2022 à 19:57:47

                      Un problème avec l'antivirus ? Ce ne serait pas la 1ère fois.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                        11 juin 2022 à 22:07:05

                        Le premier code renvoyer le message d'erreur car apparemment je n'avais pas mis vscode à jour. Après l'avoir m.a.j le code s’exécuter parfaitement.

                        Je n'ai pas d'antivirus je suis sur Ubuntu, le problème venait de du fait que lors de l'initialisation de ma table je ne lui ais pas donné de grandeur ni de valeur.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 juin 2022 à 23:24:55

                          Je citais le 1er code, qui n'a aucun problème.

                          Enfin, si tu n'as plus de problème, tu peux marquer la discussion comme résolue.

                          -
                          Edité par edgarjacobs 11 juin 2022 à 23:25:16

                          • Partager sur Facebook
                          • Partager sur Twitter

                          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                            12 juin 2022 à 9:15:33

                            Et active les warnings parce qu'un tableau vide n'est pas légal (ni l'initialisation avec {} avant C2x).
                            • Partager sur Facebook
                            • Partager sur Twitter

                            git is great because Linus did it, mercurial is better because he didn't.

                              12 juin 2022 à 9:50:36

                              Dans mes paramètre Vsintelicode est activé !
                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 juin 2022 à 14:14:00

                                Le code suivant ne donne aucun warning avec -Wall -Wextra. Ça prend quoi comme flag?
                                Et le code fonctionne (risqué)
                                -
                                #include <stdio.h>
                                int main(void) {
                                    int tab[] ={};
                                    tab[0] = 1;
                                    printf("%d\n", tab[0]);
                                }
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Le Tout est souvent plus grand que la somme de ses parties.

                                  12 juin 2022 à 14:25:33

                                  sous VC il donne une erreur de syntaxe tout warnings désactivés.

                                  sous  MinGW gcc erreur avec -pedantic

                                  sous  clang warning avec -pedantic

                                  -
                                  Edité par rouIoude 12 juin 2022 à 14:41:50

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  ...
                                    12 juin 2022 à 14:37:06

                                    Exact pour -Wpedantic
                                    J'ai fait un petit test, sur mon ordi sans warning, ça marche jusqu'à un indice de 131. C'est vraiment un comportement indéterminé.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Le Tout est souvent plus grand que la somme de ses parties.

                                      13 juin 2022 à 8:51:08

                                      Oui parce que gcc et clang laisse les extensions activées par défaut (et c'est bien malheureux).
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      git is great because Linus did it, mercurial is better because he didn't.

                                      Erreur bizzare lors de la compilation

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown