Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/06/2008, à 11:43

njneroo

Erreur de segmentation (core dumped)

Bonjour !

Alors voila, j'ai un petit gros problème, lorsque je veux lancer un petit programme écrit en C qui a compilé avec tous les warnings possibles et imaginables, , et qui possède juste UNE petite allocation manuelle du type malloc(sizeof(int)), je tombe automatiquement sur la bonne vieille erreur de segmentation..

Le truc, c'est que j'ai testé mes programmes chez d'autres personnes et ils marchent tous. J'arrive vraiment pas à comprendre : les allocations dynamiques de mémoire que je fais sont très classiques (allocation de tableaux, de chaines de caractères et de listes chainées, puis basta), mais à la vue d'un malloc, il refuse de me faire quoi que ce soit......

Alors je sais pas trop si c'est en fait un problème de version du noyau linux (carrément) couplé à la version de gcc que j'utilise... j'en ai aucune idée. Tout ce que je sais, c'est que j'utilise une version 32-Bits d'Ubuntu (Dapper), et que mon processeur est un AMD Athlon 64 3500+....

Si quelqu'un pouvait m'aider ce serait sympa : ca m'éviterai d'aller programmer à l'école le samedi quand il y a personne.....

nj

#2 Le 06/06/2008, à 11:48

®om

Re : Erreur de segmentation (core dumped)

Poste un bout de code smile

Hors ligne

#3 Le 06/06/2008, à 11:56

njneroo

Re : Erreur de segmentation (core dumped)

Alors voici iun bout de code tout bête qui sert à rien mais qui ne marche pas....

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
/* Juste pour etre sur ....*/ 
#include <string.h>

int main(){
    printf("ATTENTION CA VA PLANTER !");
    char *chaine = malloc(5*sizeof(char));
    strcpy(chaine, "toto");
    printf("%s\n", chaine);
    return EXIT_SUCCESS;
}

ceci enfermé dans test_malloc.c, et compilé avec la commande :

 c99 -Wall -w -pedantic -g test_malloc.c -o test_malloc

Et donc mon programme plante juste après la ligne ATTENTION CA VA PLANTER en faisant un joli core dumped Erreur de segmentation.

#4 Le 06/06/2008, à 12:13

njneroo

Re : Erreur de segmentation (core dumped)

Ah oui : je tiens également à préciser : les applications qui ne font pas d'allocation dynamique marchent impec...

#5 Le 06/06/2008, à 13:59

nicolas.sitbon

Re : Erreur de segmentation (core dumped)

njneroo a écrit :
#include <malloc.h>
/* Juste pour etre sur ....*/

sûr de quoi? malloc.h n'est pas standard, pour malloc, c'est stdlib.h!!!

Dernière modification par nicolas.sitbon (Le 06/06/2008, à 14:08)

Hors ligne

#6 Le 06/06/2008, à 14:08

nicolas.sitbon

Re : Erreur de segmentation (core dumped)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define CHAINE "toto"

int main (void)
{
   char *chaine = malloc (sizeof CHAINE);

   if (chaine != NULL)
   {
      puts ("ATTENTION CA VA PLANTER !");
      strncpy (chaine, CHAINE, sizeof CHAINE);
      puts (chaine);
      free (chaine), chaine = NULL;
   }
   return 0;
}

Hors ligne

#7 Le 06/06/2008, à 14:34

njneroo

Re : Erreur de segmentation (core dumped)

d'accord pour le malloc.h, mais bon : le code que tu m'as filé lui non plus ne marche pas. core dumped.......

#8 Le 06/06/2008, à 14:40

nicolas.sitbon

Re : Erreur de segmentation (core dumped)

c'est pas possible, tu ne lances pas le bon binaire!
tu veux pas essayer un gdb pour voir?

Hors ligne