dwww Home | Manual pages | Find package

__malloc_hook(3)           Library Functions Manual           __malloc_hook(3)

NOM
       __malloc_hook,  __malloc_initialize_hook, __memalign_hook, __free_hook,
       __realloc_hook, __after_morecore_hook - Variables de débogage de malloc
       (OBSOLÈTE)

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #include <malloc.h>

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

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

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

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

       void (*__malloc_initialize_hook)(void);

       void (*volatile __after_morecore_hook)(void);

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

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

           void (*__malloc_initialize_hook)(void) = my_init_hook;

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

       Les quatre fonctions pointées par __malloc_hook, __realloc_hook,  __me-
       malign_hook  et  __free_hook  ont  des prototypes semblables à ceux des
       fonctions malloc(3), realloc(3), memalign(3)  et  free(3),  respective-
       ment,   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 invo-
       quée à chaque fois que sbrk(2) a été appelée pour augmenter la mémoire.

STANDARDS
       Ces fonctions sont des extensions GNU.

NOTES
       L'utilisation  de ces fonctions de crochet n'est pas sûre dans des pro-
       grammes multiprocessus, et elles sont dorénavant obsolètes.  À  compter
       de  la glibc 2.24, la variable __malloc_initialize_hook a été supprimée
       de l'API et à partir de la glibc 2.34, toutes les variables de  crochet
       ont été supprimées de l'API. Les programmeurs devraient à la place pré-
       empter les appels à ces fonctions en définissant et exportant malloc(),
       free(), realloc() et calloc().

EXEMPLES
       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 les routines originelles */
       static void *(*old_malloc_hook)(size_t, const void *);

       /* Surcharge de la routine d'initialisation de la bibliothèque C */
       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;

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

           /* Appeler récursivement */
           result = malloc(size);

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

           /* printf() peut appeler malloc(), il faut donc la protéger également */
           printf("malloc(%zu) appelée depuis %p renvoie %p\n",
                   size, caller, result);

           /* Restaurer nos propres routines */
           __malloc_hook = my_malloc_hook;

           return result;
       }

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

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Gué-
       rard  <fevrier@tigreraye.org>,  Jean-Luc  Coulon (f5ibh) <jean-luc.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot <david@tilapin.org>  et  Grégoire  Scano  <gre-
       goire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la       GNU       General       Public        License        version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de  manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   7 janvier 2023                __malloc_hook(3)

Generated by dwww version 1.15 on Sat Jun 29 00:40:28 CEST 2024.