Aviso do compilador (nível 1) C4750
'identifier': função com _alloca() embutida dentro de um loop
Comentários
A função 'identificador' força a expansão embutida da função _alloca
dentro de um loop, o que pode causar um excedente de pilha quando o loop é executado.
Para corrigir este erro
Verifique se a função 'identifier' não foi modificada pelo especificador
__forceinline
.Verifique se a função "identifier" não contém uma função
_alloca
contida em um loop.Coloque a função
_alloca
em uma instrução try-except que capturará um excedente de pilha.
Exemplo
O exemplo de código a seguir chama MyFunction
em um loop, e MyFunction
chama a função _alloca
. O modificador __forceinline
causa a expansão embutida da função _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;
}