Détection de fuites mémoire avec Valgrind
	
	
		Salut,
J'envisage de me servir de GLIB pour ses commodités ( conteneurs etc... )
Malheureusement si la documentation est bien faîte, elle le serait encore mieux avec quelques exemples.
voiçi le problème  :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   |  
 
#include <stdlib.h>
#include <glib-2.0/glib.h>
 
int main (int argc, char **argv)
{ 
  gchar * n  = "toto.txt" ;
  gchar * z = NULL ;
 
  gboolean res = g_file_get_contents( n, &z, NULL, NULL );
  if( res != FALSE )
  g_printf("%s\n", z ) ;
  else
  g_printf("Erreur \n") ;
 
  if( z )  
  { g_free( z ) ;
    z = NULL ;
  }
  return 0 ;
} | 
 Tout se passe très bien. Mais en déboguant avec valgrind (linux ), ce dernier m'indique qu'il y des pertes de mémoire.
Je dois faire une erreur quelque part, mais où ?
	 
	
	
	
		Premier programme avec GTK
	
	
		Bonjour,
Voiçi le code source, et le résultat du debugger valgrind ( linux ).
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
   |  
#include <stdlib.h>
#include <gtk/gtk.h>
 
 
 
int main (int argc, char **argv)
{
 
  GtkWidget     *win, *but;
 
  gtk_init( &argc, &argv );
 
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  g_signal_connect (win, "delete-event",
                    G_CALLBACK (gtk_true), NULL);
  g_signal_connect (win, "destroy",
		    G_CALLBACK (gtk_main_quit), NULL);
 
  but = gtk_button_new_with_label ("Close yourself. I à mean it!");
  g_signal_connect_swapped (but, "clicked",
		  G_CALLBACK (gtk_object_destroy), win);
  gtk_container_add (GTK_CONTAINER (win), but);
 
  gtk_widget_show_all (win);
  gtk_main ();
 
  return 0;
} | 
 
Le résultat de valgrind donne :
	Citation:
	
		
		
			 ERROR SUMMARY: 5 errors from 2 contexts (suppressed: 83 from 1)
==4874== malloc/free: in use at exit: 1,096,962 bytes in 8,263 blocks.
==4874== malloc/free: 23,225 allocs, 14,962 frees, 3,314,462 bytes allocated.
==4874== For counts of detected errors, rerun with: -v
==4874== searching for pointers to 8,263 not-freed blocks.
==4874== checked 1,358,800 bytes.
==4874==
==4874== LEAK SUMMARY:
==4874==    definitely lost: 20,450 bytes in 692 blocks.
==4874==      possibly lost: 69,844 bytes in 66 blocks.
==4874==    still reachable: 1,006,668 bytes in 7,505 blocks.
==4874==         suppressed: 0 bytes in 0 blocks.
==4874== Use --leak-check=full to see details of leaked memory.
			
		
	
 Il y a un truc qui ne va pas ? A votre avis ?