ALLOCA(3)

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.
Schnittstelle | Attribut | Wert
alloca() | Multithread-Fähigkeit | MT-Safe

STANDARDS
Diese Funktion ist nicht in POSIX.1 enthalten.

alloca() originates from PWB and 32V, and appears in all their derivatives.

ANMERKUNGEN
The alloca() function is machine- and compiler-dependent. Because it allocates from the stack, it's faster than malloc(3)/free(3). In certain cases, it can also simplify memory deallocation in applications that use longjmp(3) or siglongjmp(3). Otherwise, its use is discouraged.

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!

By necessity, alloca() is a compiler built-in, also known as __builtin_alloca(). By default, modern compilers automatically translate all uses of alloca() into the built-in, but this is forbidden if standards conformance is requested (-ansi, -std=c*), in which case <alloca.h> is required, lest a symbol dependency be emitted.

The fact that alloca() is a built-in means it is impossible to take its address or to change its behavior by linking with a different library.

Variable length arrays (VLAs) are part of the C99 standard, optional since C11, and can be used for a similar purpose. However, they do not port to standard C++, and, being variables, live in their block scope and don't have an allocator-like interface, making them unfit for implementing functionality like strdupa(3).

FEHLER
Due to the nature of the stack, it is impossible to check if the allocation would overflow the space available, and, hence, neither is indicating an error. (However, the program is likely to receive a SIGSEGV signal if it attempts to access unavailable space.)

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