Provided by: manpages-pl-dev_20060617-1_all bug

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)