J'essaie de créer un tableau dynamique qui stocke les mots d'une phrase donnée dans un tableau 2D dynamique en utilisant un double pointeur, mais chaque fois que je donne plus de trois mots , je reçois l'erreur suivante:glibc détectée: realloc(): invalide taille suivante
*** glibc detected *** ./a.out: realloc(): invalid next size: 0x000000000255a030 ***
Code pertinent ci-dessous:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char **ptr=NULL;
char letter;
int ptrsize=1, wordsize=1;
ptr=malloc(ptrsize*sizeof(char *));
ptr[ptrsize]=(char *)malloc(wordsize*sizeof(char));
do
{
letter=getchar();
while ((letter!=' ')&&(letter!='\n'))
{
ptr[ptrsize][wordsize]=letter;
*ptr= realloc(*ptr,wordsize+1);
wordsize++;
letter=getchar();
}
ptrsize++;
ptr = realloc(ptr,ptrsize*sizeof(char));
wordsize=1;
ptr[ptrsize]=malloc(wordsize*sizeof(char));
}
while (letter!='\n');
return 0;
}
J'ai réussi à augmenter la taille de la peine en faisant des modifications à la malloc et realloc de la double pointeur, mais n'ont toujours pas trouvé de solut solide ion. Merci d'avance.
duplication possible de [Faire face à une erreur "\ * \ * \ * glibc détectée \ * \ * \ * free(): invalide taille suivante (rapide)"] (http://stackoverflow.com/questions/2317021/ face-a-error-glibc-detected-free-invalid-next-size-fast) –