Provided by: manpages-ro-dev_4.28.0-2_all 

NUME
alloca - alocă memorie care este eliberată automat
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <alloca.h>
void *alloca(size_t size);
DESCRIERE
Funcția alloca() alocă size octeți de spațiu în cadrul stivei apelantului. Acest spațiu temporar este
eliberat automat când funcția care a numit alloca() returnează la apelantul său.
VALOAREA RETURNATĂ
Funcția alloca() returnează un indicator la începutul spațiului alocat. Dacă alocarea cauzează depășirea
stivei, comportamentul programului este nedefinit.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
│ Interfață │ Atribut │ Valoare │
├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
│ alloca() │ Siguranța firelor │ MT-Safe │
└─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘
STANDARDE
Niciunul.
ISTORIC
PWB, 32V.
NOTE
Funcția alloca() este dependentă de mașină și de compilator. Deoarece alocă din stivă, este mai rapidă
decât malloc(3) și free(3). În anumite cazuri, poate simplifica și realocarea memoriei în aplicațiile
care utilizează longjmp(3) sau siglongjmp(3). În caz contrar, utilizarea sa este descurajată.
Deoarece spațiul alocat de alloca() este alocat în cadrul stivei, acel spațiu este eliberat automat dacă
funcția return este trecută printr-un apel către longjmp(3) sau siglongjmp(3).
Spațiul alocat de alloca() nu este eliberat automat dacă indicatorul care se referă la acesta iese pur și
simplu din domeniul de aplicare.
Nu încercați să executați free(3) pentru a elibera spațiul alocat de alloca()!
Din necesitate, alloca() este un compilator încorporat, cunoscut și ca __builtin_alloca(). În mod
implicit, compilatoarele moderne traduc automat toate utilizările lui alloca() în sistemul încorporat,
dar acest lucru este interzis dacă se solicită conformitatea cu standardele (-ansi, -std=c*), în care caz
<alloca.h> este necesar, ca să nu fie emisă o dependență de simbol.
Faptul că funcția alloca() este încorporată înseamnă că este imposibil să-i iei adresa sau să-i schimbi
comportamentul prin conectarea cu o bibliotecă diferită.
Matricele de lungime variabilă (VLA) fac parte din standardul C99, opțional începând cu C11 și pot fi
utilizate într-un scop similar. Cu toate acestea, ele nu sunt adaptate la standardul C++ și, fiind
variabile, trăiesc în domeniul lor de bloc și nu au o interfață asemănătoare alocatorului, ceea ce le
face inadecvate pentru implementarea funcționalității precum strdupa(3).
ERORI
Din cauza naturii stivei, este imposibil să se verifice dacă alocarea ar depăși spațiul disponibil și,
prin urmare, nici nu indică o eroare; (cu toate acestea, este probabil ca programul să primească un
semnal SIGSEGV dacă încearcă să acceseze spațiul ce nu este disponibil).
Pe multe sisteme alloca() nu poate fi folosită în lista de argumente a unui apel de funcție, deoarece
spațiul de stivă rezervat de alloca() ar apărea pe stiva din mijlocul spațiului pentru argumentele
funcției.
CONSULTAȚI ȘI
brk(2), longjmp(3), malloc(3)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută 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.
Pagini de manual de Linux 6.9.1 2 mai 2024 alloca(3)