Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
'identifier': Funktion mit _alloca() in eine Schleife eingebettet
Hinweise
Die Funktion "Bezeichner" erzwingt die Inlineerweiterung der _alloca Funktion innerhalb einer Schleife, was zu einem Stapelüberlauf führen kann, wenn die Schleife ausgeführt wird.
So beheben Sie diesen Fehler
Stellen Sie sicher, dass die Funktion "Bezeichner" nicht mit dem
__forceinlineBezeichner geändert wird.Stellen Sie sicher, dass die Funktion "Bezeichner" keine Funktion enthält
_alloca, die in einer Schleife enthalten ist.Geben Sie weder den Switch noch
/O2/Ox/Ogden/O1Kompilierungsschalter an.Platzieren Sie die
_allocaFunktion in einer try-except-Anweisung , die einen Stapelüberlauf abfangen soll.
Beispiel
Im folgenden Codebeispiel wird MyFunction in einer Schleife aufgerufen und MyFunction ruft die _alloca -Funktion auf. Der __forceinline -Modifizierer bewirkt die Inlineerweiterung der _alloca -Funktion.
// c4750.cpp
// compile with: /O2 /W1 /c
#include <intrin.h>
char * volatile newstr;
__forceinline void myFunction(void) // C4750 warning
{
// The _alloca function does not require a __try/__except
// block because the example uses compiler option /c.
newstr = (char * volatile) _alloca(1000);
}
int main(void)
{
for (int i=0; i<50000; i++)
myFunction();
return 0;
}