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

_malloca