C6255
Avertissement C6255 : _alloca signale un échec en levant une exception de dépassement de capacité de la pile. Si possible, utilisez _malloca à la place.
Cet avertissement indique qu'un appel de _alloca a été détecté en dehors de la gestion des exceptions locale. _alloca doit toujours être appelé depuis la plage protégée d'un gestionnaire d'exceptions parce qu'il peut déclencher une exception de dépassement de capacité de la pile, en cas d'échec. Si possible, utilisez _malloca au lieu de _alloca, qui est une version plus sécurisée de _alloca.
Exemple
Le code suivant génère cet avertissement car _alloca peut générer l'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 ...
}
}