Condividi tramite


Avviso del compilatore (livello 1) C4750

'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

  1. Assicurarsi che la funzione 'identifier' non venga modificata con l'identificatore __forceinline .

  2. Verificare che la funzione 'identifier' non contenga una _alloca funzione contenuta in un ciclo.

  3. Non specificare l'opzione /O1di compilazione , /O2/Ox, o /Og .

  4. Inserire la _alloca funzione 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;
}

Vedi anche

_alloca