Provided by:
manpages-pl-dev_20060617-1_all 
NAZWA
alloca - alokacja pamięci
SKŁADNIA
#include <alloca.h>
void *alloca(size_t rozmiar);
OPIS
Funkcja alloca przydziela rozmiar bajtów pamięci na ramce stosu
procedury, z której została wywołana. Ta tymczasowa przestrzeń jest
automatycznie zwalniana po powrocie funkcji, które wywołuje alloca do
miejsca wywołania.
WARTOŚĆ ZWRACANA
Funkcja alloca zwraca wskaźnik do początku przydzielonej pamięci. Gdy
przydzielenie pamięci spowoduje przepełnienie stosu, zachowanie
programu nie jest określone.
ZGODNE Z
Istnieją dowody, że funkcja alloca występowała w 32v, pwb, pwb.2, 3bsd
oraz 4bsd. W BSD 4.3 istnieje dla niej strona podręcznika. Linux
korzysta z wersji GNU. Funkcja ta nie występuje w POSIX ani w SUSv3.
UWAGI DOTYCZĄCE WERSJI GNU
Normalnie, gcc przekłada wywołania alloca poprzez kod wplatany
(inlined). Nie będzie to czynione, gdy podana zostanie jedna z opcji:
-ansi lub -fno-builtin. Lecz należy być ostrożnym! Domyślnie, zawarta
w glibc wersja <stdlib.h> włącza <alloca.h> zawierający wiersz
# define alloca(size) __builtin_alloca (size)
z niepożądanymi konsekwencjami, jeśli ktoś posiada własną wersję tej
funkcji.
Fakt, że kod tej funkcji jest wplatany powoduje niemożliwość pobrania
jej adresu, jak też niemożliwość zmiany jej zachowania poprzez
konsolidacją z inną biblioteką,
Kod wplatany często składa się z pojedynczej instrukcji modyfikującej
wskaźnik stosu, lecz nie sprawdzającej jego przepełnienia. Zatem nigdy
nie jest zwracana wartość NULL świadcząca o błędzie.
BŁĘDY
Funkcja alloca jest zależna od architektury i kompilatora. W wielu
systemach jej implementacja jest niepoprawna. Odradza się jej używania.
W wielu systemach alloca nie może być używana w obrębie listy
argumentów w wywołaniu funkcji, gdyż zarezerwowana przez alloca
przestrzeń stosu znalazłaby się w środku przezstrzeni stosu
przeznaczonej na argumenty funkcji.
ZOBACZ TAKŻE
brk(2), pagesize(2), calloc(3), malloc(3), realloc(3)