alloca(3) Library Functions Manual alloca(3) NUME alloca - aloca memorie care este eliberata automat BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include void *alloca(size_t size); DESCRIERE Funcia alloca() aloca size octei de spaiu in cadrul stivei apelantului. Acest spaiu temporar este eliberat automat cand funcia care a numit alloca() returneaza la apelantul sau. VALOAREA RETURNATA Funcia alloca() returneaza un indicator la inceputul spaiului alocat. Daca alocarea cauzeaza depairea stivei, comportamentul programului este nedefinit. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |alloca() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE Niciunul. ISTORIC PWB, 32V. NOTE Funcia alloca() este dependenta de maina i de compilator. Deoarece aloca din stiva, este mai rapida decat malloc(3) i free(3). In anumite cazuri, poate simplifica i realocarea memoriei in aplicaiile care utilizeaza longjmp(3) sau siglongjmp(3). In caz contrar, utilizarea sa este descurajata. Deoarece spaiul alocat de alloca() este alocat in cadrul stivei, acel spaiu este eliberat automat daca funcia return este trecuta printr-un apel catre longjmp(3) sau siglongjmp(3). Spaiul alocat de alloca() nu este eliberat automat daca indicatorul care se refera la acesta iese pur i simplu din domeniul de aplicare. Nu incercai sa executai free(3) pentru a elibera spaiul alocat de alloca()! Din necesitate, alloca() este un compilator incorporat, cunoscut i ca __builtin_alloca(). In mod implicit, compilatoarele moderne traduc automat toate utilizarile lui alloca() in sistemul incorporat, dar acest lucru este interzis daca se solicita conformitatea cu standardele (-ansi, -std=c*), in care caz este necesar, ca sa nu fie emisa o dependena de simbol. Faptul ca funcia alloca() este incorporata inseamna ca este imposibil sa-i iei adresa sau sa-i schimbi comportamentul prin conectarea cu o biblioteca diferita. Matricele de lungime variabila (VLA) fac parte din standardul C99, opional incepand cu C11 i pot fi utilizate intr-un scop similar. Cu toate acestea, ele nu sunt adaptate la standardul C++ i, fiind variabile, traiesc in domeniul lor de bloc i nu au o interfaa asemanatoare alocatorului, ceea ce le face inadecvate pentru implementarea funcionalitaii precum strdupa(3). ERORI Din cauza naturii stivei, este imposibil sa se verifice daca alocarea ar depai spaiul disponibil i, prin urmare, nici nu indica o eroare; (cu toate acestea, este probabil ca programul sa primeasca un semnal SIGSEGV daca incearca sa acceseze spaiul ce nu este disponibil). Pe multe sisteme alloca() nu poate fi folosita in lista de argumente a unui apel de funcie, deoarece spaiul de stiva rezervat de alloca() ar aparea pe stiva din mijlocul spaiului pentru argumentele funciei. CONSULTAI I brk(2), longjmp(3), malloc(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.9.1 2 mai 2024 alloca(3)