.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mcheck 3 "5 iunie 2025" "Pagini de manual de Linux 6.15" .SH NUME mcheck, mcheck_check_all, mcheck_pedantic, mprobe \- verifică consistența grămezii .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBint mcheck(typeof(void (enum mcheck_status \fP\fImstatus\fP\fB)) *\fP\fIf\fP\fB);\fP \fBint mcheck_pedantic(\fP \fB typeof(void (enum mcheck_status \fP\fImstatus\fP\fB)) *\fP\fIf\fP\fB);\fP \fBvoid mcheck_check_all(void);\fP .P \fBenum mcheck_status mprobe(void *\fP\fIptr\fP\fB);\fP .fi .SH DESCRIERE Funcția \fBmcheck\fP() instalează un set de cârlige de depanare pentru familia de funcții de alocare a memoriei \fBmalloc\fP(3). Aceste cârlige determină efectuarea anumitor verificări de consistență asupra stării grămezii. Verificările pot detecta erori ale aplicației, cum ar fi eliberarea unui bloc de memorie de mai multe ori sau coruperea structurilor de date de evidență care preced imediat un bloc de memorie alocat. .P Pentru a fi eficientă, funcția \fBmcheck\fP() trebuie să fie apelată înainte de primul apel la \fBmalloc\fP(3) sau la o funcție conexă. În cazurile în care acest lucru este dificil de asigurat, legarea programului cu \fI\-lmcheck\fP inserează un apel implicit la \fBmcheck\fP() (cu un argument NULL) înainte de primul apel la o funcție de alocare a memoriei. .P Funcția \fBmcheck_pedantic\fP() este similară cu \fBmcheck\fP(), dar efectuează verificări asupra tuturor blocurilor alocate ori de câte ori este apelată una dintre funcțiile de alocare a memoriei. Acest lucru poate fi foarte lent! .P Funcția \fBmcheck_check_check_all\fP() determină o verificare imediată a tuturor blocurilor alocate. Acest apel este eficient numai dacă \fBmcheck\fP() este apelată mai înainte. .P În cazul în care sistemul detectează o inconsistență în grămadă, funcția furnizată de apelant, indicată de \fIf\fP, este invocată cu un singur argument, \fImstatus\fP, care indică ce tip de inconsistență a fost detectată. Dacă \fIf\fP este NULL, o funcție implicită afișează un mesaj de eroare la \fIstderr\fP și apelează \fBabort\fP(3). .P Funcția \fBmprobe\fP() efectuează o verificare a consistenței blocului de memorie alocat indicat de \fIptr\fP. Funcția \fBmcheck\fP() trebuie apelată în prealabil (în caz contrar, \fBmprobe\fP() returnează \fBMCHCHECK_DISABLED\fP). .P Următoarea listă descrie valorile returnate de \fBmprobe\fP() sau pasatee ca argument \fImstatus\fP atunci când este invocată \fIf\fP: .TP \fBMCHECK_DISABLED\fP (doar \fBmprobe\fP()) \fBmcheck\fP() nu a fost apelată înainte de a fi apelată prima funcție de alocare a memoriei. Verificarea consistenței nu este posibilă. .TP \fBMCHECK_OK\fP (doar \fBmprobe\fP()) Nu s\-a detectat nicio inconsecvență. .TP \fBMCHECK_HEAD\fP Memoria anterioară unui bloc alocat a fost alterată. .TP \fBMCHECK_TAIL\fP Memoria care a urmat unui bloc alocat a fost alterată. .TP \fBMCHECK_FREE\fP Un bloc de memorie a fost eliberat de două ori. .SH "VALOAREA RETURNATĂ" \fBmcheck\fP() și \fBmcheck_pedantic\fP() returnează 0 în caz de succes, sau \-1 în caz de eroare. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBmcheck\fP(), \fBmcheck_pedantic\fP(), \fBmcheck_check_all\fP(), \fBmprobe\fP() T} Siguranța firelor T{ .na .nh MT\-Unsafe race:mcheck const:malloc_hooks T} .TE .SH STANDARDE GNU. .SH ISTORIC .TP \fBmcheck_pedantic\fP() .TQ \fBmcheck_check_all\fP() glibc 2.2. .TP \fBmcheck\fP() .TQ \fBmprobe\fP() glibc 2.0. .SH NOTE .\" But is MALLOC_CHECK_ slower? Legarea unui program cu \fI\-lmcheck\fP și utilizarea variabilei de mediu \fBMALLOC_CHECK_\fP (descrisă în \fBmallopt\fP(3)) determină detectarea acelorași tipuri de erori. Însă, utilizarea \fBMALLOC_CHECK_\fP nu necesită relegarea aplicației. .SH EXEMPLE Programul de mai jos apelează \fBmcheck\fP() cu un argument NULL și apoi eliberează același bloc de memorie de două ori. Următoarea sesiune shell demonstrează ce se întâmplă la rularea programului: .P .in +4n .EX $\fB ./a.out\fP Pe cale să se elibereze \& Pe cale să se elibereze a doua oară bloc eliberat de două ori Operație abandonată (memorie descărcată) .EE .in .SS "Sursa programului" .\" SRC BEGIN (mcheck.c) \& .EX #include #include #include \& int main(void) { char *p; \& if (mcheck(NULL) != 0) { fprintf(stderr, "mcheck() a eșuat\[rs]n"); \& exit(EXIT_FAILURE); } \& p = malloc(1000); \& fprintf(stderr, "Pe cale să se elibereze\[rs]n"); free(p); fprintf(stderr, "\enPe cale să se elibereze a doua oară\[rs]n"); free(p); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBmalloc\fP(3), \fBmallopt\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 .