Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       alloca - Speicher reservieren, der automatisch freigegeben wird

"UBERSICHT

       #include <alloca.h>

       void *alloca( size_t groesse);

BESCHREIBUNG

       Die  Funktion  alloca()  reserviert groesse Byte auf dem Stapelspeicher
       des Aufrufenden. Dieser temporare Bereich wird automatisch freigegeben,
       wenn die Funktion, die alloca() aufrief, zum Aufrufenden zuruckkehrt.

R"UCKGABEWERT

       Die Funktion alloca() gibt einen Zeiger auf den Anfang des reservierten
       Bereichs   zuruck.   Falls   das   Reservieren   einen   Uberlauf   des
       Stapelspeichers   verursachte,   ist   das   Verhalten   des  Programms
       undefiniert.

KONFORM ZU

       Diese Funktion ist nicht in POSIX.1-2001 enthalten.

       Es ist bekannt, dass die Funktion alloca() in 32V, PWB, BWB.2, 3BSD und
       4BSD  erschienen  ist.  Es  gibt unter 4.3BSD eine Manpage dafur. Linux
       verwendet die GNU-Version.

ANMERKUNGEN

       Die  Funktion  alloca()  ist  maschinen-  und   compilerabhangig.   Fur
       bestimmte  Anwendungen  kann  ihre  Benutzung die Leistungsfahigkeit im
       Vergleich zu malloc(3) plus free(3) erhohen. In bestimmten Fallen  kann
       sie  auBerdem  das  Freigeben von Speicher in Anwendungen vereinfachen,
       die longjmp(3) oder siglongjmp(3) benutzen. Andernfalls wird von  ihrem
       Gebrauch abgeraten.

       Da der durch alloca() reservierte Bereich innerhalb des Stapelspeichers
       liegt,  wird  dieser  Bereich   automatisch   freigegeben,   wenn   die
       Funktionsruckkehr  durch  den  Aufruf von longjmp(3) oder siglongjmp(3)
       ubersprungen wird.

       Versuchen Sie nicht mit free(3) Speicher freizugeben, der mit  alloca()
       reserviert wurde!

   Bemerkungen zur GNU-Version
       Normalerweise    ubersetzt    gcc(1)    Aufrufe    von   alloca()   mit
       >>Inlined-Code<<. Dies ist nicht so, wenn entweder  die  Option  -ansi,
       -std=c89,  -std=c99  oder  -fno-builtin  angegeben  ist (und der Header
       <alloca.h> nicht eingebunden ist). Aber vorsicht! StandardmaBig  bindet
       die  Glibc-Version  von  <stdlib.h>  <alloca.h>  ein  und dieser Header
       enthalt die Zeile

           #define alloca(groesse)   __builtin_alloca (groesse)

       mit chaotischen Konsequenzen, wenn jemand eine private  Version  dieser
       Funktion hat.

       Die  Tatsache,  dass  der Code inlined ist, bedeutet, dass es unmoglich
       ist die Adresse dieser Funktion  zu  bekommen  oder  ihr  Verhalten  zu
       andern, indem mit einer anderen Bibliothek gelinkt wird.

       Der  >>Inlined-Code<<  besteht  oft  aus  einer einzelnen Anweisung zum
       Anpassen  des  Stapelspeicher-Zeigers   und   pruft   nicht,   ob   ein
       Stapelspeicher-Uberlauf    auftritt.   Daher   gibt   es   dort   keine
       NULL-Fehler-Ruckkehr.

FEHLER

       Es gibt keine Fehleranzeige, wenn der  Stapelspeicher  nicht  erweitert
       werden  kann.  (Das  Programm  wird  jedoch  wahrscheinlich  nach einer
       fehlgeschlagenen Reservierung ein  SIGSEGV-Signal  empfangen,  wenn  es
       versucht auf den nicht reservierten Speicher zuzugreifen.)

       Auf  vielen  Systemen  kann alloca() nicht innerhalb der Argumenteliste
       der aufrufenden  Funktion  benutzt  werden,  weil  der  durch  alloca()
       reservierte  Bereich  des Stapelspeichers in der Mitte des Bereichs fur
       die Funktionsarumente liegen wurde.

SIEHE AUCH

       brk(2), longjmp(3), malloc(3)

KOLOPHON

       Diese  Seite  ist  Teil  der   Veroffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     konnen,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

"UBERSETZUNG

       Die  deutsche  Ubersetzung  dieser  Handbuchseite wurde von Ralf Demmer
       <rdemmer@rdemmer.de> und Chris Leick <c.leick@vollbio.de> erstellt.

       Diese Ubersetzung ist Freie Dokumentation; lesen Sie  die  GNU  General
       Public   License   Version   3  oder  neuer  bezuglich  der  Copyright-
       Bedingungen. Es wird KEINE HAFTUNG ubernommen.

       Wenn  Sie  Fehler  in  der  Ubersetzung  dieser  Handbuchseite  finden,
       schicken     Sie     bitte     eine     E-Mail     an     <debian-l10n-
       german@lists.debian.org>.