Scroll to navigation

end(3) Library Functions Manual end(3)

NUME

etext, edata, end - sfârșitul segmentelor de program

REZUMAT

extern etext;
extern edata;
extern end;

DESCRIERE

Adresele acestor simboluri indică sfârșitul diferitelor segmente de program:

Aceasta este prima adresă după sfârșitul segmentului de text (codul programului).
Aceasta este prima adresă după sfârșitul segmentului de date inițializat.
Aceasta este prima adresă după sfârșitul segmentului de date neinițializate (cunoscut și sub numele de segment BSS).

STANDARDE

Deși aceste simboluri sunt furnizate de mult timp în majoritatea sistemelor UNIX, ele nu sunt standardizate; utilizați-le cu prudență.

NOTE

Programul trebuie să declare în mod explicit aceste simboluri; ele nu sunt definite în niciun fișier antet.

În unele sisteme, numele acestor simboluri sunt precedate de caractere de subliniere, astfel: _etext, _edata și _end. Aceste simboluri sunt, de asemenea, definite pentru programele compilate în Linux.

La începutul execuției programului, întreruperea programului se va afla undeva în apropierea lui &end (poate la începutul paginii următoare). Cu toate acestea, întreruperea se va schimba pe măsură ce memoria este alocată prin brk(2) sau malloc(3). Utilizați sbrk(2) cu un argument de zero pentru a afla valoarea curentă a întreruperii programului.

EXEMPLE

Atunci când este rulat, programul de mai jos produce un rezultat precum cel care urmează:


$ ./a.out
Prima adresă după:

textul programului (etext) 0x8048568
datele inițializate (edata) 0x804a01c
datele neinițializate (end) 0x804a024

Sursa programului

#include <stdio.h>
#include <stdlib.h>
extern char etext, edata, end; /* Simbolurile trebuie să fie de un anumit tip,

sau «gcc -Wall» se va plânge */ int main(void) {
printf("Prima adresă după:\n");
printf(" textul programului (etext) %10p\n", &etext);
printf(" datele inițializate (edata) %10p\n", &edata);
printf(" datele neinițializate (end) %10p\n", &end);
exit(EXIT_SUCCESS); }

CONSULTAȚI ȘI

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

TRADUCERE

Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

30 octombrie 2022 Pagini de manual de Linux 6.03