14.9 Speicher vom Stack anfordern mit »alloca()« (nicht ANSI C) 

Die Funktion alloca() ist nicht vom ANSI-C-Standard vorgeschrieben. Da diese Funktion bei vielen Compilern vorhanden ist, soll sie hier kurz erwähnt werden. Die Syntax zu alloca() lautet:
void *alloca(size_t size);
Bei Linux/UNIX befindet sich alloca() in der Headerdatei <stdlib.h>, und unter MS-DOS/Windows sollte sich diese Funktion in der Headerdatei <malloc.h> befinden.
alloca() kann bezüglich der Verwendung mit malloc() verglichen werden, aber mit dem Unterschied, dass alloca() den Speicherplatz nicht vom Heap, sondern vom Stack anfordert. Die Funktion alloca() vergrößert den Stack-Bereich (Stack Frame) der aktuellen Funktion.
alloca() hat außerdem den Vorteil, dass der Speicherplatz nicht extra mit free() freigegeben werden muss, da dieser automatisch beim Verlassen der Funktion freigegeben wird. Ganz im Gegenteil, es darf hierbei nicht einmal »gefree()t« werden, da der alloca()-Block nicht von dem malloc()-Pool kommt, sondern eben vom Stack. Ein free() hätte dabei böse Folgen. Die Funktion alloca() wird ansonsten genauso verwendet wie die Funktion malloc().
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.