Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"identifier": funkcja z _alloca() wstawiona do pętli
Uwagi
Funkcja "identifier" wymusza wbudowane rozszerzenie _alloca funkcji w pętli, co może spowodować przepełnienie stosu podczas wykonywania pętli.
Aby poprawić ten błąd
Upewnij się, że funkcja "identifier" nie została zmodyfikowana za pomocą specyfikatora
__forceinline.Upewnij się, że funkcja "identifier" nie zawiera
_allocafunkcji zawartej w pętli._allocaUmieść funkcję w instrukcji try-except, która przechwyci przepełnienie stosu.
Przykład
Poniższy przykład kodu wywołuje MyFunction pętlę i MyFunction wywołuje _alloca funkcję. Modyfikator __forceinline powoduje rozszerzenie wbudowane funkcji _alloca .
// 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;
}