Provided by: manpages-fr-dev_2.64.1-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.

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 glibg */
       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)

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       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> ».