Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'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
_allocacontida em um loop.Coloque a função
_allocaem 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;
}