c - double free or corruption (fasttop) -


this code reads null terminated string file (file containing null terminated strings & should provide index wanted string).

error:

*** error in `./main': double free or corruption (fasttop): 0x090a4a80 *** aborted 

code:

char *tmp_realloc=null; char *sstring=null; int i=1;  /*set file pointer point string*/ fseek(fh,index,seek_set);  sstring=(char*)malloc(sizeof(char));    if(sstring == null)         return null;  tmp_realloc=sstring;  while( (*(sstring+i-1)=(char)fgetc((file*)fh)) != 0x0 ) {     /*reallocate more memory*/      tmp_realloc=(char*)realloc((char*)sstring,++i);       /*if not same address copy old new & set old point new*/       if(tmp_realloc != sstring){           strcpy((char*)tmp_realloc,(char*)sstring);           free(sstring);           sstring=tmp_realloc;       } } 

could tell me pointer causing issue (& reason) ?

remove part

/*if not same address copy old new & set old point new*/  if(tmp_realloc != sstring){      strcpy((char*)tmp_realloc,(char*)sstring);      free(sstring);      sstring=tmp_realloc;  } 

this (something memcpy() used instead of strcpy()) realloc() if succeeds. instead of that, insert error checking , assign tmp_realloc sstring if no error found.

also casting char* char* seems useless, why not remove these casts?


Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -