Anzeigen: Delphi C++
Anzeigeeinstellungen

alloca

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu malloc.h - Index


Header-Datei

malloc.h

Kategorie

Speicherroutinen

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.

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;         /* Gültigen Stack-Frame erzwingen */
    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);
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

+

In anderen Sprachen