problème realloc (), n’a pas été alloué

J’essaie de lire une chaîne

char *ssortingng=malloc(sizeof(char)); char *start_ssortingng=ssortingng; //pointer to ssortingng start while ((readch=read(file, buffer, 4000))!=0){ // read filelen=filelen+readch; //ssortingng length for (d=0;d<readch;d++) *start_string++=buffer[d]; //append buffer to str realloc(string, filelen); //realloc with new length 

parfois, il se bloque avec l’erreur suivante:

  malloc: *** error for object 0x1001000e0: pointer being realloc'd was not allocated 

mais parfois pas, je n’ai aucune idée de comment le réparer.

realloc() ne met pas à jour le pointeur qui lui est transmis. Si realloc() réussit, le pointeur transmis est free() d et l’adresse de la mémoire allouée est renvoyée. Dans le code affiché, realloc() tentera de free(ssortingng) plusieurs fois, ce qui est un comportement non défini.

Stocker le résultat de realloc() :

 char* t = realloc(ssortingng, filelen); if (t) { ssortingng = t; } 

L’adresse de la chaîne peut changer lorsque vous appelez realloc() .

 char *ssortingng=malloc(sizeof(char)); char *start_ssortingng=ssortingng; //pointer to ssortingng start while ((readch=read(file, buffer, 4000))!=0){ // read filelen=filelen+readch; //ssortingng length for (d=0;d