.\" -*- coding: UTF-8 -*- .\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\" Heavily based on glibc documentation .\" Polished, added docs, removed glibc doc bug, 2002-07-20, aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH __malloc_hook 3 "2 mai 2024" "Pagini de manual de Linux 6.8" .SH NUME __malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook, __realloc_hook, __after_morecore_hook \- variabile de depanare malloc (DEPRECIATE) .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBvoid *(*volatile __malloc_hook)(size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP .P \fBvoid *(*volatile __realloc_hook)(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB,\fP \fB const void *\fP\fIcaller\fP\fB);\fP .P \fBvoid *(*volatile __memalign_hook)(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB,\fP \fB const void *\fP\fIcaller\fP\fB);\fP .P \fBvoid (*volatile __free_hook)(void *\fP\fIptr\fP\fB, const void *\fP\fIcaller\fP\fB);\fP .P \fBvoid (*__malloc_initialize_hook)(void);\fP .P \fBvoid (*volatile __after_morecore_hook)(void);\fP .fi .SH DESCRIERE Biblioteca GNU C vă permite să modificați comportamentul lui \fBmalloc\fP(3), \fBrealloc\fP(3) și \fBfree\fP(3) prin specificarea unor funcții cârlig corespunzătoare. Puteți utiliza aceste cârlige pentru a vă ajuta la depanarea programelor care utilizează alocarea dinamică a memoriei, de exemplu. .P Variabila \fB__malloc_initialize_hook\fP indică o funcție care este apelată o singură dată atunci când este inițializată implementarea malloc. Aceasta este o variabilă slabă, astfel încât poate fi suprascrisă în aplicație cu o definiție ca cea de mai jos: .P .in +4n .EX void (*__malloc_initialize_hook)(void) = my_init_hook; .EE .in .P Acum, funcția \fImy_init_hook\fP() poate face inițializarea tuturor cârligelor. .P Cele patru funcții indicate de \fB__malloc_hook\fP, \fB__realloc_hook\fP, \fB__memalign_hook\fP, \fB__free_hook\fP au un prototip asemănător funcțiilor \fBmalloc\fP(3), \fBrealloc\fP(3), \fBmemalign\fP(3), \fBfree\fP(3), respectiv \fBmemalign\fP(3), cu excepția faptului că acestea au un argument final \fIcaller\fP care oferă adresa apelantului lui \fBmalloc\fP(3), etc. .P Variabila \fB__after_morecore_hook\fP indică o funcție care este apelată de fiecare dată după ce lui \fBsbrk\fP(2) i s\-a cerut mai multă memorie. .SH STANDARDE GNU. .SH NOTE .\" https://bugzilla.redhat.com/show_bug.cgi?id=450187 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=9957 Utilizarea acestor funcții cârlig nu este sigură în programele cu mai multe fire, iar acum acestea sunt depreciate. Începând cu glibc 2.24, variabila \fB__malloc_initialize_hook\fP a fost eliminată din API, iar începând cu glibc 2.34, toate variabilele cârlig au fost eliminate din API. În schimb, programatorii ar trebui să preîntâmpine apelurile către funcțiile relevante prin definirea și exportul \fBmalloc\fP(), \fBfree\fP(), \fBrealloc\fP() și \fBcalloc\fP(). .SH EXEMPLE Iată un scurt exemplu de utilizare a acestor variabile. .P .EX #include #include \& /* Prototipurile pentru cârligele noastre */ static void my_init_hook(void); static void *my_malloc_hook(size_t, const void *); \& /* Variabile pentru a salva cârligele originale */ static void *(*old_malloc_hook)(size_t, const void *); \& /* Suprascrie cârligul de inițializare din biblioteca 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; \& /* Restabilește toate cârligele vechi */ __malloc_hook = old_malloc_hook; \& /* Apel recursiv */ result = malloc(size); \& /* Salvează cârligele de bază */ old_malloc_hook = __malloc_hook; \& /* printf() might call malloc(), so protect it too */ printf("malloc(%zu) apelat din %p returnează %p\en", size, caller, result); \& /* Restabilește propriile noastre cârlige*/ __malloc_hook = my_malloc_hook; \& return result; } .EE .SH "CONSULTAȚI ȘI" \fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .