noble (3) alloca.3.gz

Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

       alloca - Speicher reservieren, der automatisch freigegeben wird

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <alloca.h>

       void *alloca(size_t Größe);

BESCHREIBUNG

       Die Funktion alloca() reserviert Größe Byte auf im Stapelspeicher-Frame 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.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────────────────────────────────────────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├──────────────────────────────────────────────────────────────────────┼───────────────────────┼─────────┤
       │alloca()                                                              │ Multithread-Fähigkeit │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴───────────────────────┴─────────┘

STANDARDS

       Diese Funktion ist nicht in POSIX.1 enthalten.

       alloca() stammt von PWB und 32V und erscheint in allen Ableitungen davon.

ANMERKUNGEN

       Die Funktion alloca() ist maschinen- und compilerabhängig. Da sie Speicher vom Stapel reserviert, ist sie
       schneller  als malloc(3) undfree(3). 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 Stapelspeicher-Frames liegt, wird dieser Bereich
       automatisch freigegeben, wenn die Funktionsrückkehr durch den Aufruf von  longjmp(3)  oder  siglongjmp(3)
       übersprungen wird.

       Der  mittels  alloca() reservierte Bereich wird nicht automatisch freigegeben, falls der Zeiger, der sich
       darauf bezieht, den Geltungsbereich verlässt.

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

       Notwendigerweise ist alloca() im Compiler eingebaut, auch als __builtin_alloca()  bekannt.  Standardmäßig
       übersetzen  moderne  Compiler  automatisch  alle  Verwendungen  von  alloca()  in die eingebaute Version,
       allerdings ist dies verboten, falls Standardkonformität erbeten wird (-ansi,  -std=c*).  In  diesem  Fall
       wird <alloca.h> benötigt, damit keine Symbolabhängigkeit ausgegeben wird.

       Die  Tatsache,  dass  alloca()  eine eingebaute Funktion 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.

       Felder  variabler  Länge  (VLAs)  sind  Teil des C99-Standards, optional seit C11 und können für ähnliche
       Zwecke verwendet werden. Allerdings können sie nicht in Standard-C++ portiert werden und da sie Variablen
       sind, leben sie in ihrem blockbezogenen Geltungsbereich und haben keine Allocator-ähnliche Schnittstelle.
       Damit sind sie für die Implementierung von Funktionalitäten wie strdupa(3) ungeeignet.

FEHLER

       Aufgrund der Natur des Stapelspeichers ist es  nicht  möglich,  zu  prüfen,  ob  die  Reservierung  einen
       Überlauf  beim  verfügbaren  Platz  erzeugt.  Daher  wird  dies  weder  angezeigt noch ist es ein Fehler.
       (Allerdings ist es wahrscheinlich, dass das Programm ein Signal SIGSEGV erhält, wenn es versucht, auf den
       nicht verfügbaren Platz 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)

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite wurde von Ralf Demmer <rdemmer@rdemmer.de>, Chris Leick
       <c.leick@vollbio.de>,   Mario   Blättermann   <mario.blaettermann@gmail.com>   und    Helge    Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die  GNU  General  Public  License  Version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die
       Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.