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

BEZEICHNUNG

       alloca - Speicher reservieren, der automatisch freigegeben wird

ÜBERSICHT

       #include <alloca.h>

       void *alloca( size_t groesse);

BESCHREIBUNG

       Die  Funktion  alloca()  reserviert groesse Byte auf dem Stapelspeicher
       des Aufrufenden. Dieser temporäre Bereich wird automatisch freigegeben,
       wenn die Funktion, die alloca() aufrief, zum Aufrufenden zurückkehrt.

RÜCKGABEWERT

       Die Funktion alloca() gibt einen Zeiger auf den Anfang des reservierten
       Bereichs   zurück.   Falls   das   Reservieren   einen   Überlauf   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 dafür. Linux
       verwendet die GNU-Version.

ANMERKUNGEN

       Die  Funktion  alloca()  ist  maschinen-  und   compilerabhängig.   Für
       bestimmte  Anwendungen  kann  ihre  Benutzung die Leistungsfähigkeit im
       Vergleich zu malloc(3) plus free(3) erhöhen. In bestimmten Fällen  kann
       sie  außerdem  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
       Funktionsrückkehr  durch  den  Aufruf von longjmp(3) oder siglongjmp(3)
       übersprungen wird.

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

   Bemerkungen zur GNU-Version
       Normalerweise übersetzt 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! Standardmäßig bindet die Glibc-Version
       von <stdlib.h> <alloca.h> ein und dieser Header enthält 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  unmöglich
       ist  die  Adresse  dieser  Funktion  zu  bekommen oder ihr Verhalten zu
       ändern, indem mit einer anderen Bibliothek gelinkt wird.

       Der »Inlined-Code«  besteht  oft  aus  einer  einzelnen  Anweisung  zum
       Anpassen   des   Stapelspeicher-Zeigers   und   prüft   nicht,  ob  ein
       Stapelspeicher-Überlauf   auftritt.   Daher   gibt   es   dort    keine
       NULL-Fehler-Rückkehr.

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  für
       die Funktionsarumente liegen würde.

SIEHE AUCH

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

KOLOPHON

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

ÜBERSETZUNG

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

       Diese  Übersetzung  ist  Freie Dokumentation; lesen Sie die GNU General
       Public  License  Version  3  oder  neuer   bezüglich   der   Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

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