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 :

Probleme avec malloc


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Cycles en Informatique
    Inscrit en
    Juin 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cycles en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 67
    Par défaut Probleme avec malloc
    Erreur quand je execute mon prog : j'utilise deux tablea u alloues par malloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    *** glibc detected *** free(): invalid next size (fast): 0x0804a018 ***
     
    Program received signal SIGABRT, Aborted.
    0xffffe410 in __kernel_vsyscall ()

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour,

    un jardinage en regle de la mémoire ?
    es tu sur de ne pas utiliser de la memoire qui ne t appartiens pas ?

    Pourrais tu isoler le bout de code correspondant (allocation et utilisation du tableau et l'appel a free) parce que la ca fait pas beaucoup de pistes a suivre

  3. #3
    Membre confirmé
    Homme Profil pro
    Cycles en Informatique
    Inscrit en
    Juin 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cycles en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 67
    Par défaut
    en faite les valeur insere dans les deux tableaux j'aurai besoind 'eux durant tout l'execution de mon pogramme je ne libere la mémoire qu'apres avoir fini toute l'execution des instruction apres l'allocation c'est toujrs la meme erreur:
    Voila mon code en faite

    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
    tab1=(int*)malloc(n*sizeof(int));
     
    if((fp=fopen(SORTIE, "r"))==NULL) {
    	fprintf(stderr,"\n impossible");
    	return(EXIT_FAILURE);
    }
    fscanf(fp,"%d\n",&n);
    printf("\n");
    for(i=0;i<n;i++)
    	fscanf(fp,"%d\n",&tab1[i]);
    for(i=0;i<n;i++)
    	printf("%d\n",tab1[i]);
    printf("\n");
    tab2=(double*)malloc(n*sizeof(double));
    for(i=0;i<n;i++)
    	fscanf(fp,"%le\n", &tab2[i]);
    for(i=0;i<n;i++)
    	printf("%le\n",tab2[i]);
    fclose(fp);
    free(tab1);
    free(tab2);

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Je ne comprends pas pourquoi tu alloues ton tableau avant d'en lire la taille dans le fichier.

    si j ai bien compris le premier entier lu dans le fichier donne le nombre d'entier a stocker.

    Dans ce cas ton malloc de tab1 doit etre apres le premier fscanf non ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Cycles en Informatique
    Inscrit en
    Juin 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cycles en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 67
    Par défaut
    le premier entier lu constitue la taille de la boucle 4 : apres j'ai 8 autres valeur qui suivent. en faite l'affichage c'est fait normal mais enfin de ligne il m'affiche l'erreur de plus.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ce que veut dire BainE c'est que tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tab1=(int*)malloc(n*sizeof(int));
    
    ..... 
    
    fscanf(fp,"%d\n",&n);
    Donc ton n pour l'allocation il vient d'où ???

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

Discussions similaires

  1. probleme avec malloc et realloc
    Par zouari.rami dans le forum Débuter
    Réponses: 2
    Dernier message: 12/03/2011, 14h07
  2. Probleme avec malloc sur tableau de chaine
    Par grex1 dans le forum C
    Réponses: 2
    Dernier message: 12/09/2010, 22h36
  3. probleme avec malloc
    Par coyotemk dans le forum Débuter
    Réponses: 5
    Dernier message: 20/12/2009, 21h34
  4. probleme avec malloc
    Par Hisoka_Hunter dans le forum C
    Réponses: 4
    Dernier message: 14/01/2009, 08h43
  5. probleme avec les malloc snprintf
    Par pinto_armindo dans le forum Réseau
    Réponses: 8
    Dernier message: 30/10/2007, 18h08

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