Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       __malloc_hook,  __malloc_initialize_hook,  __memalign_hook,  __free_hook,  __realloc_hook,
       __after_morecore_hook - Variables de débogage de malloc.

SYNOPSIS

       #include <malloc.h>

       void *(*__malloc_hook)(size_t size, const void *caller);

       void *(*__realloc_hook)(void *ptr, size_t size, const void *caller);

       void *(*__memalign_hook)(size_t alignment, size_t size,
                                const void *caller);

       void (*__free_hook)(void *ptr, const void *caller);

       void (*__malloc_initialize_hook)(void);

       void (*__after_morecore_hook)(void);

DESCRIPTION

       La bibliothèque C GNU vous permet de modifier le comportement de malloc(3), realloc(3)  et
       free(3)  en  fixant les points d'entrée des routines. Vous pouvez utiliser ces points pour
       faciliter le débogage des programmes utilisant des allocations de  mémoire  dynamique  par
       exemple.

       La  variable  __malloc_initialize_hook  pointe vers une fonction qui est appelée une seule
       fois à l'initialisation de malloc. C'est une variable libre qui  peut  être  modifiée  par
       l'application avec une déclaration comme celle-ci :

           void (*__malloc_initialize_hook)(void) = my_init_hook;

       À présent, la fonction my_init_hook() pourra faire toute l'initialisation des routines.

       Les  quatre  fonctions  pointées  par  __malloc_hook,  __realloc_hook,  __memalign_hook et
       __free_hook ont des prototypes semblables à  ceux  des  fonctions  malloc(3),  realloc(3),
       memalign(3)  et  free(3), respectivement, avec un argument final supplémentaire caller qui
       fournit l'adresse du code appelant malloc(3), etc.

       La variable __after_morecore_hook pointe sur une fonction qui est invoquée à  chaque  fois
       que sbrk(2) a été appelée pour augmenter le segment de données.

CONFORMITÉ

       Ces fonctions sont des extensions GNU.

NOTES

       L'utilisation   de   ces   fonctions  de  crochet  n'est  pas  sûre  dans  des  programmes
       multiprocessus, et elles sont dorénavant dépréciées. Les programmeurs devraient à la place
       préempter  les appels à ces fonctions en définissant et exportant des fonctions telles que
       « malloc » et « free ».

EXEMPLE

       Voici un court exemple d'utilisation de ces variables.

       #include <stdio.h>
       #include <malloc.h>

       /* Prototypes de nos routines */
       static void my_init_hook(void);
       static void *my_malloc_hook(size_t, const void *);

       /* Variables pour sauver la routine originale */
       static void *(*old_malloc_hook)(size_t, const void *);

       /* Écrasement de la routine d'initialisation glibc */
       void (*__malloc_initialize_hook) (void) = my_init_hook;

       static void
       my_init_hook(void)
       {
           old_malloc_hook = __malloc_hook;
           __malloc_hook = my_malloc_hook;
       }

       static void *
       my_malloc_hook(size_t size, const void *caller)
       {
           void *result;

           /* Replacer la routine originale */
           __malloc_hook = old_malloc_hook;

           /* Call recursively */
           result = malloc(size);

           /* Sauver la routine originale */
           old_malloc_hook = __malloc_hook;

           /* printf() might call malloc(), so protect it too. */
           printf("malloc(%u) called from %p returns %p\n",
                   (unsigned int) size, caller, result);

           /* Replacer notre routine */
           __malloc_hook = my_malloc_hook;

           return result;
       }

VOIR AUSSI

       mallinfo(3), malloc(3), mcheck(3), mtrace(3)

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <http://www.blaess.fr/christophe/>   (1996-2003),    Alain    Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe francophone de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».