API C de MySQL: fuite de mémoire - C - Programmation
Marsh Posté le 26-08-2003 à 13:58:22
aucune idée. lis bien la doc. t'es sur que dans ton for, y a rien à libérer ?
par contre tip-of-the-day
const char * const requete= "SELECT ..."; est bien mieux
Marsh Posté le 26-08-2003 à 14:42:42
Effectivement, j'ai oublié
Code :
|
Mais j'ai toujours
==3691== 64 bytes in 1 blocks are still reachable in loss record 1 of 2 |
Marsh Posté le 26-08-2003 à 15:26:51
verbiage?
j'utilise 3 paramètres de valgrind:
|
Marsh Posté le 26-08-2003 à 15:41:13
ben oui
==> at 0x4015E310: malloc (vg_clientfuncs.c:103)
c'est pas compliué, c'est un fichier à toi? ben ligne 103, t'as un malloc célibataire
Marsh Posté le 26-08-2003 à 15:57:49
Taz a écrit : |
je ne suis point aveugle!
Taz a écrit : |
non, regarde la pile d'appel:
|
ou encore
|
C'est-à-dire que l'allocation est demandée par la library libmysqlclient
Taz a écrit : |
D'où ma question: est-ce que j'ai oublié d'appeler quelque chose? Ou faut-il que je me trouve une autre version de libmysql?
Marsh Posté le 26-08-2003 à 16:18:22
1) lis la doc
2) relis la doc
3) cherche un rapport de bugs
4) assure d'avoir la dernière version
Marsh Posté le 01-09-2003 à 08:52:06
Alors, personne n'utilise l'API C de MySQL?
Si?
Alors, personne ne vérifie les programmes qu'il écrit?! Et après on s'etonne que certaines choses marchent mal...
Marsh Posté le 26-08-2003 à 12:29:05
Salut,
mon code est simple mais valgrind trouve des fuites de mémoires dans le library libmysqlclient.so.10.0.0. Est-ce que j'ai oublié quelque chose?
Mon code:
Sortie de Valgrind:
==2636== 40 bytes in 1 blocks are definitely lost in loss record 1 of 4
==2636== at 0x4015E310: malloc (vg_clientfuncs.c:103)
==2636== by 0x40254A2D: my_malloc (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x402500EF: read_rows (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x40251EF6: mysql_store_result (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636==
==2636== 4088 bytes in 1 blocks are still reachable in loss record 2 of 4
==2636== at 0x4015E310: malloc (vg_clientfuncs.c:103)
==2636== by 0x4025A64C: my_once_alloc (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x4025ACB0: read_charset_index (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x4025AEAB: init_available_charsets (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636==
==2636== 8164 bytes in 1 blocks are possibly lost in loss record 3 of 4
==2636== at 0x4015E310: malloc (vg_clientfuncs.c:103)
==2636== by 0x40254A2D: my_malloc (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x40257DF1: alloc_root (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x4024FF86: unpack_fields (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636==
==2636== 8228 bytes in 2 blocks are still reachable in loss record 4 of 4
==2636== at 0x4015E310: malloc (vg_clientfuncs.c:103)
==2636== by 0x40254A2D: my_malloc (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x4025A218: init_dynamic_array (in /usr/lib/mysql/libmysqlclient.so.10.0.0)
==2636== by 0x4025AE96: init_available_charsets (in /usr/lib/mysql/libmysqlclient.so.10.0.0)