__malloc_hook(3) Library Functions Manual __malloc_hook(3) __malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook, __realloc_hook, __after_morecore_hook - malloc () (libc -lc) #include typeof(void *(size_t size, const void *caller)) *volatile __malloc_hook; typeof(void *(void *p, size_t size, const void *caller)) *volatile __realloc_hook; typeof(void *(size_t align, size_t size, const void *caller)) *volatile __memalign_hook; typeof(void *(void *p, const void *caller)) *volatile __free_hook; typeof(void (void)) *__malloc_initialize_hook; typeof(void (void)) *volatile __after_mrecore_hook; C malloc(3) realloc(3) free(3) . . __malloc_initialize_hook malloc. : typeof(void (void)) *__malloc_initialize_hook = my_init_hook; my_init_hook() . __malloc_hook __realloc_hook __memalign_hook __free_hook malloc(3) realloc(3) memalign(3) free(3) caller malloc(3) . __after_morecore_hook sbrk(2). GNU. . glibc 2.24 __malloc_initialize_hook glibc 2.34 . malloc() free() realloc() calloc(). . #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 typeof(void *(size_t, const void *)) *old_malloc_hook; /* Override initializing hook from the C library */ typeof(void (void)) *__malloc_initialize_hook = 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; } mallinfo(3) malloc(3) mcheck(3) mtrace(3) 3 . . : . 6.18 8 2026 __malloc_hook(3)