Provided by: manpages-de-dev_4.27.0-1_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-Sicher │
       └───────────────────────────────────────────────────────────────────┴───────────────────────┴───────────┘

STANDARDS

       Keine.

GESCHICHTE

       PWB, 32V.

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 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.

Linux man-pages 6.9.1                              2. Mai 2024                                         alloca(3)