Man page - malloc_hook(3)

Packages contains this manual

Available languages:

en fr ja ro

Manual

__malloc_hook

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
STANDARDS
NOTES
EXEMPLES
VOIR AUSSI
TRADUCTION

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 malloc (3), realloc (3) et free (3) en fixant les points d’entrĂ©e des routines. 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 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 la mémoire.

STANDARDS

GNU.

NOTES

L’utilisation de ces fonctions de crochet n’est pas sĂ»re dans des programmes 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 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 française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.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.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 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 .