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 :

glibc detected.. realloc pbm


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 103
    Par défaut glibc detected.. realloc pbm
    Bonjour;
    j'ai une erreur qui me soule alors j'en deduit qu'il y a un truck que j'ai pas pigé :/
    J'ai isolé le pbm .. :
    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 <sys/time.h>
    #include <sys/types.h>
     
    char **mots = 0;int nbmots = 0;
    int *fcts = 0;
    //ajouter une commande
    void ajMot(char* mot, int fct){
    	printf("%d\n", nbmots);
    	if (mots == 0){
    		mots = malloc(++nbmots);
    		fcts = malloc(nbmots);
    	}else {
    		mots = realloc(mots, ++nbmots);
    		fcts = realloc(fcts, nbmots);
    	}
    	fcts[nbmots-1] = fct;
    	mots[nbmots-1] = malloc(strlen(mot)+1);
    	strcpy(mots[nbmots-1], mot);
    	mots[nbmots-1][strlen(mot)+1] = 0;
    }
    int main(void)
    {
       ajMot("help2", 0);
       ajMot("help", 0);
       ajMot("helpjj", 0);
       ajMot("helpjhuhuk", 0);
       ajMot("hkjhjklelpjhuhuk", 0);
       ajMot("helphhjhuhuk", 0);
       ajMot("helpjpppoohuhuk", 0);
       return (0);
    }
    resultat :
    *** glibc detected *** realloc(): invalid next size (fast) : etc..

    Une idée ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Je vois déjà un problème. Quand tu fais

    tu alloues nbmots+1 octets alors qu'il te faudrait faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malloc((++nbmots)*sizeof(char *));

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Deuxième chose, puisque tu accèdes à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mots[nbmots-1][strlen(mot)+1]
    ,

    il te faut allouer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mots[nbmots-1]=malloc(strlen(mot)+2);
    D'ailleurs, quelle est l'utilité de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mots[nbmots-1][strlen(mot)+1] = 0;
    ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 103
    Par défaut
    erg chui bidon .. ^^ bon bin sbon mci!!

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/11/2008, 16h13
  2. erreur glibc detected double free or corruption.
    Par Screwt-K dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2007, 16h46
  3. * glibc detected * free(): invalid pointer
    Par ViRouF dans le forum C
    Réponses: 4
    Dernier message: 28/03/2007, 17h10
  4. [Debutant]*** glibc detected *** free()
    Par Treuze dans le forum Débuter
    Réponses: 3
    Dernier message: 17/03/2006, 15h34
  5. Réponses: 5
    Dernier message: 04/11/2005, 18h59

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