Scroll to navigation

end(3) Library Functions Manual end(3)

الاسم

etext, edata, end - نهاية مقاطع البرنامج

موجز

extern etext;
extern edata;
extern end;

الوصف

عناوين هذه الرموز تشير إلى نهاية مقاطع البرنامج المختلفة:

هذا هو أول عنوان بعد نهاية مقطع النص (كود البرنامج).
هذا هو أول عنوان بعد نهاية مقطع البيانات المُهيّأة.
هذا هو أول عنوان بعد نهاية مقطع البيانات غير المُهيّأة (المعروف أيضًا بمقطع BSS).

المعايير

لا شيء.

التاريخ

رغم أن هذه الرموز وُفّرت منذ زمن طويل على معظم أنظمة UNIX، إلا أنها غير موحدة؛ استخدمها بحذر.

ملاحظات

يجب على البرنامج أن يُصرّح بهذه الرموز صراحةً؛ فهي غير مُعرّفة في أي ملف رأس.

في بعض الأنظمة، تُسبق أسماء هذه الرموز بشرطات سفلية، هكذا: _etext و_edata و_end. هذه الرموز مُعرّفة أيضًا للبرامج المُجمّعة على Linux.

عند بدء تنفيذ البرنامج، سيكون فاصل البرنامج قريبًا من &end (ربما في بداية الصفحة التالية). لكن الفاصل سيتغير عند تخصيص الذاكرة عبر brk(2) أو malloc(3). استخدم sbrk(2) مع معامل صفر لإيجاد القيمة الحالية لفاصل البرنامج.

أمثلة

عند التشغيل، يُنتج البرنامج أدناه مخرجات مثل التالية:


$ ./a.out
أول عنوان بعد:

نص البرنامج (etext) 0x8048568
البيانات المُهيّأة (edata) 0x804a01c
البيانات غير المُهيّأة (end) 0x804a024

مصدر البرنامج

#include <stdio.h>
#include <stdlib.h>
extern char etext, edata, end;  /* يجب أن تكون للرموز نوع ما،

وإلا سيشتكي "gcc -Wall" */ int main(void) {
printf("أول عنوان بعد:\n");
printf(" نص البرنامج (etext) %10p\n", &etext);
printf(" البيانات المُهيّأة (edata) %10p\n", &edata);
printf(" البيانات غير المُهيّأة (end) %10p\n", &end);
exit(EXIT_SUCCESS); }

انظر أيضًا

objdump(1), readelf(1), sbrk(2), elf(5)

ترجمة

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

21 سبتمبر 2025 صفحات دليل لينكس 6.18