Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
'identifier': funzione con inlining di _alloca() in un ciclo
Osservazioni:
La funzione 'identifier' forza l'espansione inline della _alloca funzione all'interno di un ciclo, che potrebbe causare un overflow dello stack quando viene eseguito il ciclo.
Per correggere l'errore
Assicurarsi che la funzione 'identifier' non venga modificata con l'identificatore
__forceinline.Verificare che la funzione 'identifier' non contenga una
_allocafunzione contenuta in un ciclo.Non specificare l'opzione
/O1di compilazione ,/O2/Ox, o/Og.Inserire la
_allocafunzione in un'istruzione try-except che intercetta un overflow dello stack.
Esempio
Nell'esempio di codice seguente viene chiamato MyFunction in un ciclo e MyFunction chiama la funzione _alloca . Il modificatore __forceinline provoca l'espansione inline della funzione _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;
}