__malloc_hook(3) Library Functions Manual __malloc_hook(3) NUME __malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook, __realloc_hook, __after_morecore_hook - variabile de depanare malloc (DEPRECIATE) BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #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; DESCRIERE Biblioteca GNU C va permite sa modificai comportamentul lui malloc(3), realloc(3) i free(3) prin specificarea unor funcii carlig corespunzatoare. Putei utiliza aceste carlige pentru a va ajuta la depanarea programelor care utilizeaza alocarea dinamica a memoriei, de exemplu. Variabila __malloc_initialize_hook indica o funcie care este apelata o singura data atunci cand este iniializata implementarea malloc. Aceasta este o variabila slaba, astfel incat poate fi suprascrisa in aplicaie cu o definiie ca cea de mai jos: typeof(void (void)) *__malloc_initialize_hook = my_init_hook; Acum, funcia my_init_hook() poate face iniializarea tuturor carligelor. Cele patru funcii indicate de __malloc_hook, __realloc_hook, __memalign_hook, __free_hook au un prototip asemanator funciilor malloc(3), realloc(3), memalign(3), free(3), respectiv memalign(3), cu excepia faptului ca acestea au un argument final caller care ofera adresa apelantului lui malloc(3), etc. Variabila __after_morecore_hook indica o funcie care este apelata de fiecare data dupa ce lui sbrk(2) i s-a cerut mai multa memorie. STANDARDE GNU. NOTE Utilizarea acestor funcii carlig nu este sigura in programele cu mai multe fire, iar acum acestea sunt depreciate. Incepand cu glibc 2.24, variabila __malloc_initialize_hook a fost eliminata din API, iar incepand cu glibc 2.34, toate variabilele carlig au fost eliminate din API. In schimb, programatorii ar trebui sa preintampine apelurile catre funciile relevante prin definirea i exportul malloc(), free(), realloc() i calloc(). EXEMPLE Iata un scurt exemplu de utilizare a acestor variabile. #include #include /* Prototipurile pentru carligele noastre */ static void my_init_hook(void); static void *my_malloc_hook(size_t, const void *); /* Variabile pentru a salva carligele originale */ static typeof(void *(size_t, const void *)) *old_malloc_hook; /* Suprascrie carligul de iniializare din biblioteca C */ 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; /* Restabilete toate carligele vechi */ __malloc_hook = old_malloc_hook; /* Apel recursiv */ result = malloc(size); /* Salveaza carligele de baza */ old_malloc_hook = __malloc_hook; /* printf() might call malloc(), so protect it too */ printf("malloc(%zu) apelat de la %p returneaza %p\n", size, caller, result); /* Restabilete propriile noastre carlige */ __malloc_hook = my_malloc_hook; return result; } CONSULTAI I mallinfo(3), malloc(3), mcheck(3), mtrace(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.18 8 februarie 2026 __malloc_hook(3)