alloca
Nach oben zu Malloc.h - Index
Inhaltsverzeichnis
Header-Datei
malloc.h
Prototyp
void *alloca(size_t size);
Beschreibung
Reserviert temporär Speicher auf dem Stack.
alloca reserviert size Bytes auf dem Stack. Der reservierte Speicher wird beim Beendigen der Funktion automatisch freigegeben.
Von der Verwendung von alloca wird abgeraten. Die Funktion alloca sollte nie im try-Blocks eines C++-Programms verwendet werden. Wenn eine Exception ausgelöst wird, werden alle Daten beschädigt, die von alloca auf dem Stack abgelegt werden.
Rückgabewert
Wenn ausreichend Stack-Speicher verfügbar ist, gibt alloca einen Zeiger auf den reservierten Stack-Bereich zurück. Andernfalls wird NULL zurückgegeben.
Portabilität
POSIX | ANSI C | ANSI C++ | Win32 | Win64 | OS X | |
---|---|---|---|---|---|---|
alloca | + |
Beispiel
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
void test(int a) {
char *newstack;
int len = a;
char dummy[1];
dummy[0] = 0; /* force good stack frame */
printf("SP before calling alloca(0x%X) = 0x%X\n", len, _SP);
newstack = (char *) alloca(len);
printf("SP after calling alloca = 0x%X\n", _SP);
if (newstack)
printf("Alloca(0x%X) returned %p\n", len, newstack);
else
printf("Alloca(0x%X) failed\n", len);
}
void main() {
test(256);
test(16384);
}