.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2012, Michael Kerrisk .\" 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 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم mcheck, mcheck_check_all, mcheck_pedantic, mprobe \- التحقق من اتساق الكومة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .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 الوصف تثبّت الدالة \fBmcheck\fP() مجموعة من خطافات التصحيح لعائلة دوال تخصيص الذاكرة \fBmalloc\fP(3). تتسبب هذه الخطافات في إجراء فحوصات اتساق معينة على حالة الكومة. يمكن للفحوصات اكتشاف أخطاء التطبيق مثل تحرير كتلة ذاكرة أكثر من مرة أو إفساد هياكل بيانات المحاسبة التي تسبق كتلة الذاكرة المخصصة مباشرة. .P لكي تكون فعالة، يجب استدعاء الدالة \fBmcheck\fP() قبل أول استدعاء لـ \fBmalloc\fP(3) أو دالة ذات صلة. في الحالات التي يصعب فيها ضمان ذلك، يُدرج ربط البرنامج بـ \fI\-lmcheck\fP استدعاءً ضمنيًا لـ \fBmcheck\fP() (بوسيطة NULL) قبل أول استدعاء لدالة تخصيص ذاكرة. .P الدالة \fBmcheck_pedantic\fP() مشابهة لـ \fBmcheck\fP()، ولكنها تجري فحوصات على جميع الكتل المخصصة كلما تم استدعاء إحدى دوال تخصيص الذاكرة. قد يكون هذا بطيئًا جدًا! .P تتسبب الدالة \fBmcheck_check_all\fP() في إجراء فحص فوري على جميع الكتل المخصصة. يكون هذا الاستدعاء فعالاً فقط إذا تم استدعاء \fBmcheck\fP() مسبقًا. .P إذا اكتشف النظام عدم اتساق في الكومة، تُستدعى الدالة المقدمة من المتصل المشار إليها بـ \fIf\fP مع وسيطة واحدة، \fImstatus\fP، تشير إلى نوع عدم الاتساق الذي تم اكتشافه. إذا كانت \fIf\fP NULL، تطبع دالة مبدئية رسالة خطأ على \fIstderr\fP وتستدعي \fBabort\fP(3). .P تجري الدالة \fBmprobe\fP() فحص اتساق على كتلة الذاكرة المخصصة المشار إليها بـ \fIptr\fP. يجب استدعاء الدالة \fBmcheck\fP() مسبقًا (وإلا تُرجع \fBmprobe\fP() \fBMCHECK_DISABLED\fP). .P تصف القائمة التالية القيم التي تُرجعها \fBmprobe\fP() أو التي تُمرر كوسيطة \fImstatus\fP عند استدعاء \fIf\fP: .TP \fBMCHECK_DISABLED\fP (\fBmprobe\fP() فقط) لم تُستدع \fBmcheck\fP() قبل استدعاء أول دالة تخصيص ذاكرة. فحص الاتساق غير ممكن. .TP \fBMCHECK_OK\fP (\fBmprobe\fP() فقط) لم يُكتشف أي عدم اتساق. .TP \fBMCHECK_HEAD\fP تم إتلاف الذاكرة السابقة لكتلة مخصصة. .TP \fBMCHECK_TAIL\fP تم إتلاف الذاكرة التالية لكتلة مخصصة. .TP \fBMCHECK_FREE\fP تم تحرير كتلة ذاكرة مرتين. .SH "قيمة الإرجاع" تُعيد \fBmcheck\fP() و \fBmcheck_pedantic\fP() القيمة 0 عند النجاح، أو \-1 عند الخطأ. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBmcheck\fP(), \fBmcheck_pedantic\fP(), \fBmcheck_check_all\fP(), \fBmprobe\fP() T} سلامة الخيوط T{ .na .nh MT\-Unsafe race:mcheck const:malloc_hooks T} .TE .SH المعايير GNU. .SH التاريخ .TP \fBmcheck_pedantic\fP() .TQ \fBmcheck_check_all\fP() glibc 2.2. .TP \fBmcheck\fP() .TQ \fBmprobe\fP() glibc 2.0. .SH ملاحظات .\" But is MALLOC_CHECK_ slower? يُسبب وصل برنامج مع \fI\-lmcheck\fP واستخدام متغير البيئة \fBMALLOC_CHECK_\fP (الموصوف في \fBmallopt\fP(3)) كشف نفس أنواع الأخطاء. لكن، استخدام \fBMALLOC_CHECK_\fP لا يتطلب إعادة وصل التطبيق. .SH أمثلة يستدعي البرنامج أدناه \fBmcheck\fP() مع وسيط NULL ثم يُحرر نفس كتلة الذاكرة مرتين. تُظهر جلسة الصدفة التالية ما يحدث عند تشغيل البرنامج: .P .in +4n .EX $\fB ./a.out\fP About to free \& About to free a second time block freed twice Aborted (core dumped) .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (mcheck.c) \& .EX #include #include #include \& int main(void) { char *p; \& if (mcheck(NULL) != 0) { fprintf(stderr, "mcheck() failed\[rs]n"); \& exit(EXIT_FAILURE); } \& p = malloc(1000); \& fprintf(stderr, "About to free\[rs]n"); free(p); fprintf(stderr, "\[rs]nAbout to free a second time\[rs]n"); free(p); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBmalloc\fP(3)، \fBmallopt\fP(3)، \fBmtrace\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .