[GLib] memory check g_object_new
Bonsoir,
1] Dans un fichier test, j'ai crée :
Code:
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;
} |
Quand je lance Valgrind le programme s'éxecute normalement et aucune fuite de mémoire n'est détécté.
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);
Code:
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;
} |
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:
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 |