Avertissement du compilateur (niveau 1) C4750

'identifier' : fonction avec _alloca() inline dans une boucle

Notes

La fonction « identificateur » force l’expansion inline de la _alloca fonction dans une boucle, ce qui peut entraîner un dépassement de capacité de pile lorsque la boucle est exécutée.

Pour corriger cette erreur

  1. Vérifiez que la fonction « identificateur » n’est pas modifiée avec le __forceinline spécificateur.

  2. Vérifiez que la fonction « identificateur » ne contient pas de _alloca fonction contenue dans une boucle.

  3. Ne spécifiez pas le /O1commutateur , /O2ou /Ox/Og le commutateur de compilation.

  4. Placez la _alloca fonction dans une instruction try-except qui intercepte un dépassement de capacité de pile.

Exemple

L’exemple de code suivant appelle MyFunction dans une boucle, et MyFunction appelle la fonction _alloca . Le modificateur __forceinline provoque l’expansion inline de la fonction _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;
}

Voir aussi

_alloca