malloc_get_state(3)

الاسم
malloc_get_state, malloc_set_state - تسجيل واستعادة حالة تنفيذ malloc

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <malloc.h>

void *malloc_get_state(void);
int malloc_set_state(void *state);

الوصف
ملاحظة: أُزيلت هذه الدوال في glibc 2.25.

تسجل الدالة malloc_get_state() الحالة الحالية لجميع متغيرات المحاسبة الداخلية لـ malloc(3) (ولكن ليس المحتوى الفعلي للكومة أو حالة مؤشرات دوال malloc_hook(3)). تُسجل الحالة في بنية بيانات معتمة معتمدة على النظام، تُخصص ديناميكيًا عبر malloc(3)، ويُعاد مؤشر إلى تلك البنية كنتيجة للدالة. (تقع مسؤولية تحرير هذه الذاكرة عبر free(3) على عاتق المستدعي.)

تستعيد الدالة malloc_set_state() حالة جميع متغيرات المحاسبة الداخلية لـ malloc(3) إلى القيم المسجلة في بنية البيانات المعتمة المشار إليها بواسطة state.

قيمة الإرجاع
عند النجاح، تُعيد malloc_get_state() مؤشرًا إلى بنية بيانات معتمة مُخصصة حديثًا. عند الخطأ (على سبيل المثال، تعذر تخصيص ذاكرة لبنية البيانات)، تُعيد malloc_get_state() NULL.

عند النجاح، تُعيد malloc_set_state() 0. إذا اكتشف التنفيذ أن state لا يشير إلى بنية بيانات مشكلة بشكل صحيح، تُعيد malloc_set_state() -1. إذا اكتشف التنفيذ أن إصدار بنية البيانات المشار إليها بواسطة state هو إصدار أحدث مما يعرفه هذا التنفيذ، تُعيد malloc_set_state() -2.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
malloc_get_state(), malloc_set_state() | سلامة الخيوط | MT-Safe

المعايير
GNU.

ملاحظات
هذه الدوال مفيدة عند استخدام تنفيذ malloc(3) هذا كجزء من مكتبة مشتركة، ويُحفظ/يُستعاد محتوى الكومة عبر طريقة أخرى. تُستخدم هذه التقنية بواسطة GNU Emacs لتنفيذ وظيفة "التفريغ" الخاصة بها.

لا تُحفظ أو تُستعاد مؤشرات دوال الخطاف أبدًا بواسطة هذه الدوال، مع استثناءين: إذا كان فحص malloc (انظر mallopt(3)) قيد الاستخدام عند استدعاء malloc_get_state()، فإن malloc_set_state() تُعيد تعيين خطافات فحص malloc إذا أمكن؛ إذا لم يكن فحص malloc قيد الاستخدام في الحالة المسجلة، ولكن المستدعي طلب فحص malloc، فتُعاد تعيين الخطافات إلى 0.

انظر أيضًا
malloc(3), mallopt(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.