fuite de mémoire dans une fonction C

fuite de mémoire dans une fonction C - Mémoire - Hardware

Marsh Posté le 03-05-2010 à 16:54:03    

Bonjour,
J'ai ce prog. en C qui est devenu gourmand en mémoire en incrémentant le nombre d'appel de la fonction.

Code :
  1. void publishkw(const char *addr, const char *targetid, int srcid, const char *fileid, int sybilid)
  2. {
  3. PGresult* result1;
  4. PGresult* resultp1;
  5. PGresult* resultkw1;
  6. char commande_sql1[128];
  7. char publish1[128];
  8. char kw1[128];
  9. sprintf(commande_sql1,"select verify_replicat('%s', '%s', current_timestamp);", addr, targetid);
  10. result1 = PQexec(connect_database, commande_sql1);
  11. char *val1 = PQgetvalue(result1,0,0);
  12. printf("%s \n", val1);
  13. if ((PQresultStatus(result1) != PGRES_TUPLES_OK ))
  14. {
  15.            fprintf(stderr, "couldn't execute query publish\n" );
  16.  
  17.            PQclear(result1);
  18.        
  19. }
  20. else {
  21. printf ("commande publish exécutée\n" );
  22. }
  23. if ((strcmp(val1,"1" ) == 0))
  24. {sprintf(publish1,"select mape_publish (date_trunc('minute',current_timestamp), %d, '%s', '%s', %d);", srcid, fileid, targetid, sybilid);
  25. resultp1 =  PQexec(connect_database, publish1);
  26. char *pub1 = PQgetvalue(resultp1,0,0);
  27. printf ("%s \n", pub1);
  28. if ((PQresultStatus(resultp1) != PGRES_TUPLES_OK))
  29. {
  30.            fprintf(stderr, "couldn't execute query pub\n" );
  31.  
  32.            PQclear(resultp1);
  33.          
  34. }
  35. else {
  36. printf ("commande pub exécutée\n" );
  37. sprintf(kw1,"select kw_files('%s', '%s', %d);", fileid, targetid, srcid);
  38. resultkw1 = PQexec(connect_database, kw1);
  39. char *key1 = PQgetvalue(resultkw1,0,0);
  40. printf ("%s \n", key1);
  41. if ((PQresultStatus(resultkw1) != PGRES_TUPLES_OK))
  42. {
  43.            fprintf(stderr, "couldn't execute query key_pub\n" );
  44.  
  45.            PQclear(resultkw1);
  46. }
  47. else {
  48. printf ("commande key_pub exécutée\n" );
  49. }
  50. }
  51. PQclear(result1);
  52. PQclear(resultp1);
  53. PQclear(resultkw1);
  54. }


pouvez vous m'indiquer l'erreur ou la solution pour libérer la mémoire à la fin de la fonction?

Reply

Marsh Posté le 03-05-2010 à 16:54:03   

Reply

Marsh Posté le 03-05-2010 à 17:05:51    

Ton erreur est d'avoir posté cette question dans la mauvaise section.
Tu auras plus de réponses dans la zone programmation de ce forum !
 
Bonne chance.

Reply

Sujets relatifs:

Leave a Replay

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