Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
'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
Vérifiez que la fonction « identificateur » n’est pas modifiée avec le
__forceinlinespécificateur.Vérifiez que la fonction « identificateur » ne contient pas de
_allocafonction contenue dans une boucle.Ne spécifiez pas le
/O1commutateur ,/O2ou/Ox/Ogle commutateur de compilation.Placez la
_allocafonction 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;
}