Bonsoir,
1] Dans un fichier test, j'ai crée :
Quand je lance Valgrind le programme s'éxecute normalement et aucune fuite de mémoire n'est détécté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <glib-object.h> #include "dvz-object.h" int main(int argc, char *argv[]) { DvzObject *object = dvz_object_new(); DvzObject *obj = g_new(DvzObject, 1); g_object_unref(object); g_free(obj); return 0; }
2] si je comment la liberation de la mémoire, Valgrind ne détecte une fuite de mémoire que pour obj = g_new(DvzObject, 1);Savez-vous comment détécter que g_object_unref(object); n'as pas été appelé (et donc qu'il y a une fuite de mémoire) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <glib-object.h> #include "dvz-object.h" int main(int argc, char *argv[]) { DvzObject *object = dvz_object_new(); DvzObject *obj = g_new(DvzObject, 1); //g_object_unref(object); //g_free(obj); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 64 bytes in 1 blocks are definitely lost in loss record 140 of 252 dans main in /home/persistant/local/src/dvz/main.c:8 1: malloc in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so 2: g_malloc in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1 3: main in /home/persistant/local/src/dvz/main.c:8
Partager