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 ...
}
}