Bonjour,

Je viens de me mettre à la glib, juste pour avoir des structures de données en C.
Vive les tables de hachage et autres \o/.

Donc aujourd'hui, j'utilise des GArray. Dans mes tableaux je veux des char*.
Avant d'ajouter mon char* avec 'g_array_append_val()', j'alloue la mémoire, et je copie la chaine à partir d'une source statique dans le nouvel endroit de mémoire. Je ne pense pas que la glib puisse copier ma chaines de caractères toute seule .
Bref ... j'ai un jolie char* ... qui un beau jour devra être désalloué.

Je pensais faire un bête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
g_array_free(pVFile->pFile,TRUE);
Et comme j'avais mis à TRUE, je pensais que cela ferait des free() sur les éléments, mais il ne semble pas que ce soit le cas ( vive valgrind ).
Avant de faire ce g_array_free, je parcours donc mon tableau, pour faire les free de mes éléments.
Cela ne plante pas ... cela semble marcher ... mais tout les pointeurs sont déclaré par valgrind comme still reachable... du coup je pense toujours avoir une fuite de mémoire.

Quelqu'un peut t'il m'expliquer un peu le fonctionnement, et comment faire pour faire une libération de la mémoire propre?

Merci beaucoup