.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1980, 1991 Regents of the University of California. .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" @(#)alloca.3 5.1 (Berkeley) 5/2/91 .\" .\" Converted Mon Nov 29 11:05:55 1993 by Rik Faith .\" Modified Tue Oct 22 23:41:56 1996 by Eric S. Raymond .\" Modified 2002-07-17, aeb .\" 2008-01-24, mtk: .\" Various rewrites and additions (notes on longjmp() and SIGSEGV). .\" Weaken warning against use of alloca() (as per Debian bug 461100). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ALLOCA 3 "2. März 2015" GNU Linux\-Programmierhandbuch .SH BEZEICHNUNG alloca \- Speicher reservieren, der automatisch freigegeben wird .SH ÜBERSICHT \fB#include \fP .sp \fBvoid *alloca( size_t \fP\fIgroesse\fP\fB);\fP .SH BESCHREIBUNG Die Funktion \fBalloca\fP() reserviert \fIgroesse\fP Byte auf dem Stapelspeicher des Aufrufenden. Dieser temporäre Bereich wird automatisch freigegeben, wenn die Funktion, die \fBalloca\fP() aufrief, zum Aufrufenden zurückkehrt. .SH RÜCKGABEWERT Die Funktion \fBalloca\fP() 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. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lb lb lb l l l. Schnittstelle Attribut Wert T{ \fBalloca\fP() T} Multithread\-Fähigkeit MT\-Safe .TE .SH "KONFORM ZU" Diese Funktion ist nicht in POSIX.1 enthalten. Es ist bekannt, dass die Funktion \fBalloca\fP() in 32V, PWB, BWB.2, 3BSD und 4BSD erschienen ist. Es gibt unter 4.3BSD eine Handbuchseite dafür. Linux verwendet die GNU\-Version. .SH ANMERKUNGEN Die Funktion \fBalloca\fP() ist maschinen\- und compilerabhängig. Für bestimmte Anwendungen kann ihre Benutzung die Leistungsfähigkeit im Vergleich zu \fBmalloc\fP(3) plus \fBfree\fP(3) erhöhen. In bestimmten Fällen kann sie außerdem das Freigeben von Speicher in Anwendungen vereinfachen, die \fBlongjmp\fP(3) oder \fBsiglongjmp\fP(3) benutzen. Andernfalls wird von ihrem Gebrauch abgeraten. Da der durch \fBalloca\fP() reservierte Bereich innerhalb des Stapelspeichers liegt, wird dieser Bereich automatisch freigegeben, wenn die Funktionsrückkehr durch den Aufruf von \fBlongjmp\fP(3) oder \fBsiglongjmp\fP(3) übersprungen wird. Versuchen Sie nicht, mit \fBfree\fP(3) Speicher freizugeben, der mit \fBalloca\fP() reserviert wurde! .SS "Bemerkungen zur GNU\-Version" Normalerweise übersetzt \fBgcc\fP(1) Aufrufe von \fBalloca\fP() mit »Inlined\-Code«. Dies ist nicht so, wenn entweder die Option \fI\-ansi\fP, \fI\-std=c89\fP, \fI\-std=c99\fP oder \fI\-std=c11\fP angegeben \fBund\fP der Header \fI\fP nicht eingebunden ist. Andernfalls (ohne Option \-ansi oder \-std=c*) bindet die Glibc\-Version von \fI\fP \fI\fP ein und dieser Header enthält die Zeilen .nf #ifdef __GNUC__ #define alloca(size) __builtin_alloca (size) #endif .fi mit chaotischen Konsequenzen, wenn jemand eine private Version dieser Funktion hat. .LP 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. .LP 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. .SH FEHLER Es gibt keine Fehleranzeige, wenn der Stapelspeicher nicht erweitert werden kann. (Das Programm wird jedoch wahrscheinlich nach einer fehlgeschlagenen Reservierung ein \fBSIGSEGV\fP\-Signal empfangen, wenn es versucht auf den nicht reservierten Speicher zuzugreifen.) Auf vielen Systemen kann \fBalloca\fP() nicht innerhalb der Argumenteliste der aufrufenden Funktion benutzt werden, weil der durch \fBalloca\fP() reservierte Bereich des Stapelspeichers in der Mitte des Bereichs für die Funktionsarumente liegen würde. .SH "SIEHE AUCH" \fBbrk\fP(2), \fBlongjmp\fP(3), \fBmalloc\fP(3) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.09 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Ralf Demmer , Chris Leick und Mario Blättermann 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 .