__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 debogage de malloc (OBSOLETE) BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include 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 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, par exemple, faciliter le debogage des programmes utilisant des allocations de memoire dynamique. 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 la memoire. STANDARDS GNU. NOTES L'utilisation de ces fonctions de crochet n'est pas sure dans des programmes multiprocessus, et elles sont dorenavant obsoletes. A compter de la glibc 2.24, la variable __malloc_initialize_hook a ete supprimee de l'API et a partir de la glibc 2.34, toutes les variables de crochet ont ete supprimees de l'API. Les programmeurs devraient a la place preempter les appels a ces fonctions en definissant et exportant malloc(), free(), realloc() et calloc(). EXEMPLES Voici un court exemple d'utilisation de ces variables. #include #include /* Prototypes for our hooks */ static void my_init_hook(void); static void *my_malloc_hook(size_t, const void *); /* Variables to save original hooks */ static void *(*old_malloc_hook)(size_t, const void *); /* Override initializing hook from the C library */ 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; /* Restore all old hooks */ __malloc_hook = old_malloc_hook; /* Call recursively */ result = malloc(size); /* Save underlying hooks */ old_malloc_hook = __malloc_hook; /* printf() might call malloc(), so protect it too */ printf("malloc(%zu) called from %p returns %p\n", size, caller, result); /* Restore our own hooks */ __malloc_hook = my_malloc_hook; return result; } VOIR AUSSI mallinfo(3), malloc(3), mcheck(3), mtrace(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Gregoire Scano Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 __malloc_hook(3)