ex:
int
main(void)
{
mtrace();
do_the_rest_tm();
muntrace();
return 0;
}
ensuite on lance le programe:
$ MALLOC_TRACE=log.mtrace ./mon_prog
ca genere un fichier de log
on le consulte avec:
$ mtrace ./mon_prog log.mtrace
Ca permet de voir où (la fonction) a été allouer la memoire qui n'a pas été libéré au moment de l'appel a muntrace().
Le probleme c'est que si vous avez une fonction
d'allocation (qui appelle malloc()) c'est toujours cette fonction qui sera indiqué par
mtrace: ca montre pas quelle fonction
a fait la demande d'allocation, mais la fonction
qui a appelé malloc().
Ca reste pratique quand meme, mais il faut savoir
distingué les "fuites" provoqué par la libc elle meme.
[^] # Re: fonctions de la libc
Posté par Yann Droneaud . En réponse à la dépêche Recherche des bogues et fuites de mémoire. Évalué à 7.
ex:
int
main(void)
{
mtrace();
do_the_rest_tm();
muntrace();
return 0;
}
ensuite on lance le programe:
$ MALLOC_TRACE=log.mtrace ./mon_prog
ca genere un fichier de log
on le consulte avec:
$ mtrace ./mon_prog log.mtrace
Ca permet de voir où (la fonction) a été allouer la memoire qui n'a pas été libéré au moment de l'appel a muntrace().
Le probleme c'est que si vous avez une fonction
d'allocation (qui appelle malloc()) c'est toujours cette fonction qui sera indiqué par
mtrace: ca montre pas quelle fonction
a fait la demande d'allocation, mais la fonction
qui a appelé malloc().
Ca reste pratique quand meme, mais il faut savoir
distingué les "fuites" provoqué par la libc elle meme.