Avertissement C6255
_alloca indique l’échec en générant une exception de dépassement de capacité de pile. Envisagez d’utiliser _malloca à la place
Cet avertissement indique qu’un appel à _alloca
a été détecté en dehors de la gestion des exceptions locales.
Notes
_alloca
doit toujours être appelé à partir de la plage protégée d’un gestionnaire d’exceptions, car il peut déclencher une exception de dépassement de capacité de pile en cas d’échec. Si possible, au lieu d’utiliser , envisagez d’utiliser _alloca
_malloca
, qui est une version plus sécurisée de _alloca
.
Nom de l’analyse du code : UNPROTECTEDUSEOFALLOCA
Exemple
Le code suivant génère cet avertissement, car _alloca
il peut générer une exception :
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Pour corriger cet avertissement, utilisez _malloca
et ajoutez un gestionnaire d’exceptions, comme indiqué dans le code suivant :
#include <windows.h>
#include <malloc.h>
void f( )
{
void *p;
int errcode;
__try
{
p = _malloca(10);
// code...
_freea(p);
}
__except( (GetExceptionCode() == STATUS_STACK_OVERFLOW ) ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH )
{
errcode = _resetstkoflw();
// code ...
}
}
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