ALLOCA(3) | Podręcznik programisty Linuksa | ALLOCA(3) |
NAZWA¶
alloca - alokacja pamięci
SKŁADNIA¶
#include <alloca.h>
void *alloca(size_t rozmiar);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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
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)
INFORMACJE O TŁUMACZENIU¶
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
- man --locale=C 3 alloca
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
2002-07-17 | GNU |