[C] Probleme avec un free ....

Probleme avec un free .... [C] - C++ - Programmation

Marsh Posté le 24-06-2002 à 00:21:15    

Code :
  1. char *insert(char *table, char *rep)
  2. {
  3. char *cmdd;
  4. char *cmdf;
  5. char *cmd;
  6. char *separateur = "/";
  7. char *lResultFileName;
  8. char *searchdir;
  9. char *filename;
  10. lResultFileName = malloc(strlen(RESULT_FILE)*sizeof(char));
  11. strcpy(lResultFileName,RESULT_FILE);
  12. filename = malloc((strlen(rep)+strlen(lResultFileName))*sizeo
  13. f(char));
  14. sprintf(filename,"%s%s",rep,lResultFileName);
  15. cmdd=malloc(strlen("grep -wcdi " )*sizeof(char));
  16. cmdf=malloc(strlen(" >> " )*sizeof(char));
  17. strcpy(cmdd,"grep -wcdi " );
  18. strcpy(cmdf," >> " );
  19. searchdir = malloc((strlen(path)+strlen("*.*" ))*sizeof(char));
  20. sprintf(searchdir,"%s%s%s"," ",path,"*.*" );
  21. cmd = malloc((strlen(cmdd)+strlen(table)+strlen(searchdi
  22. r)+strlen(cmdf)+strlen(filename)+strlen(LINERETURN
  23. ))*sizeof(char));
  24. sprintf(cmd,"%s%s%s%s%s%s",cmdd,table,searchdir
  25. ,cmdf,filename,LINERETURN);
  26. free(filename); //ici
  27. free(lResultFileName);
  28. free(cmdd);
  29. free(cmdf);
  30. free(searchdir);
  31. return(cmd);
  32. }


 
 
Lors du free(filename); ça merde totalement ...
 
Debug error !
Program E:\ etc ...
DAMAGE : after normal block ( #70 ) at 0x003017B0
 
(Press retry to debug the application )
 
Abandon Retry Ignore ..


Message édité par paranoidandroid le 24-06-2002 à 00:22:09
Reply

Marsh Posté le 24-06-2002 à 00:21:15   

Reply

Marsh Posté le 24-06-2002 à 00:24:10    

déjà, il manque la place pour le zéro terminateur dans tes allocs.

Reply

Marsh Posté le 24-06-2002 à 00:25:23    

youdontcare a écrit a écrit :

déjà, il manque la place pour le zéro terminateur dans tes allocs.  




 
 ?????

Reply

Marsh Posté le 24-06-2002 à 00:26:21    

Dans les malloc, tu oublies de faire +1 aux strlen pour tenir compte du '\0' terminal.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 24-06-2002 à 00:27:11    

musaran a écrit a écrit :

Dans les malloc, tu oublies de faire +1 aux strlen pour tenir compte du '\0' terminal.  




 
... en effet ..
 
je ne savais pas ..
 
merci

Reply

Marsh Posté le 24-06-2002 à 07:31:17    

A mon avis ton problème vient de la ... Parce que dans les qq byte juste apres/avant tes donnée se trouvent des infos pour savoir a quoi correspond ce block. Toi tu les ecrasent du coups il se melange completement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed