Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       __malloc_hook,  __malloc_initialize_hook, __memalign_hook, __free_hook,
       __realloc_hook,  __after_morecore_hook  -  Variables  de  debogage   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  bibliotheque  C  GNU  vous  permet  de  modifier le comportement de
       malloc(3), realloc(3) et free(3) en  fixant  les  points  d'entree  des
       routines.  Vous  pouvez  utiliser ces points pour faciliter le debogage
       des programmes utilisant  des  allocations  de  memoire  dynamique  par
       exemple.

       La  variable  __malloc_initialize_hook pointe vers une fonction qui est
       appelee une seule fois a l'initialisation de malloc. C'est une variable
       libre  qui  peut  etre  modifiee par l'application avec une declaration
       comme celle-ci :
           void (*__malloc_initialize_hook)(void) = my_init_hook;
       A   present,   la   fonction   my_init_hook()   pourra   faire    toute
       l'initialisation des routines.

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

       La  variable  __after_morecore_hook  pointe  sur  une  fonction qui est
       invoquee a chaque fois que sbrk(2) a  ete  appelee  pour  augmenter  le
       segment de donnees.

CONFORMIT'E

       Ces fonctions sont des extensions GNU.

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 *);

       /* Ecrasement 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.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

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

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

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.