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
Vérifiez que la fonction « identificateur » n’est pas modifiée avec le
__forceinline
spécificateur.Vérifiez que la fonction « identificateur » ne contient pas de
_alloca
fonction contenue dans une boucle.Ne spécifiez pas le
/O1
commutateur ,/O2
ou/Ox
/Og
le commutateur de compilation.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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour