fuite de mémoire - C - Programmation
Marsh Posté le 03-05-2010 à 17:23:14
Sans vouloir etre mechant, commence par indenter ton code et poster sans les numeros de ligne qui pourrissent la balise code et tu aura qq chances de voir qq se plonger dans ton probleme. La ca me donne juste envie d'aller surfer ailleurs et je ne dois pas etre le seul
Marsh Posté le 03-05-2010 à 17:59:23
Peut-être que cela irait mieux en remontant le PQclear(result1); de la ligne 57 vers la ligne 29 et le PQclear(resultp1); de la ligne 58 vers la ligne 43, c'est à dire avant le prochain PQexec(). Si on a besoin d'une valeur plus loin, alors on peut la copier dans une autre variable. Voir la doc, http://www.network-theory.co.uk/do [...] ation.html
Marsh Posté le 03-05-2010 à 22:20:44
En réarrangeant le code, et en ne faisant pas un appel à tout de suite a PQgetvalue sans tester d'abord le code retour de la query (c'est au pif, vu que je connais pas l'API, mais ça semble logique a la lecture du code) et en corrigeant le pb d'appeller if ((strcmp(val1,"1" ) == 0)) quand ca a foiré et que val1 n'a peut être pas de valeur valable, j'obtiens:
Code :
|
Si les 3 appels à PQgetvalue allouent de la place, elle n'est désallouée nulle part. Sinon, si PQgetvalue retourne un pointeur quelque part sur son premier argument, ça semble OK (edit: j'ai été voir, et c'est le cas).
Autre chose: connect_database semble être une globale, il vaudrait mieux l'incorporer au prototype de la fonction:
void publishkw(PGconn *connect_database, const char *addr, const char *targetid, int srcid, const char *fileid, int sybilid);
A+,
Marsh Posté le 04-05-2010 à 10:11:13
Bonjour,
Cool, ça marche très bien.
Je vous remercie infiniment.
Marsh Posté le 03-05-2010 à 17:09:45
Bonjour,
J'ai ce prog. en C qui est devenu gourmand en mémoire en incrémentant le nombre d'appel de la fonction.
pouvez vous m'indiquer l'erreur ou la solution pour libérer la mémoire à la fin de la fonction?
Message édité par gilou le 03-05-2010 à 22:00:31