Tracer les allocations de mémoire

Problème

Vous voulez savoir quand de la mémoire a été allouée et quand elle a été libérée pour détecter des fuites de mémoire.

Solution

Utilisez un outil de profilage de mémoire comme celui fourni par glib, dmalloc ou autres ; ou programmez simplement le vôtre en l’adaptant à vos besoins particuliers puis en redéfinissant les fonctions d’allocation.

Si vous disposez de l’outil Valgrind, utilisez-le en priorité surtout pour rechercher une fuite mémoire ou, au contraire, pour vous assurer de l’abscence de fuite.

Discussion

Utilisation des outils inclus dans glib

L’outil de profilage de glib s’utilise très simplement et est disponible sur tous les systèmes d’exploitation où glib est portée. Son utilisation se limite à un appel à g_mem_set_vtable(glib_mem_profiler_table) en tout début de programme avant tout autre appel à une fonction de glib. Mais elle oblige à utiliser les fonctions d’allocation de glib comme g_malloc() et d’autres vues dans la recette "Allouer de la mémoire". Voyez l’exemple dans cette recette.

Utilisation de la bibliothèque dmalloc

La bibliothèque dmalloc est assez répandue et mérite que nous nous y attardions. Pour l’utiliser, commencez par placer #include <dmalloc.h> après toutes les autres lignes contenant...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Redéfinir les fonctions d'allocation de mémoire
Suivant
Créer de la mémoire partagée entre processus