C6255C6255

Avertissement C6255 : _alloca signale un échec en levant une exception de dépassement de capacité de pile.warning C6255: _alloca indicates failure by raising a stack overflow exception. Utilisez _malloca à la placeConsider using _malloca instead

Cet avertissement indique qu’un appel à _alloca a été détecté en dehors de la gestion des exceptions locales.This warning indicates that a call to _alloca has been detected outside of local exception handling. _alloca doit toujours être appelée à partir de la plage protégée d’un gestionnaire d’exceptions car il peut lever une exception de dépassement de capacité de pile en cas d’échec._alloca should always be called from within the protected range of an exception handler because it can raise a stack overflow exception on failure. Si possible, au lieu d’utiliser _alloca, envisagez d’utiliser _malloca qui est une version plus sécurisée de _alloca.If possible, instead of using _alloca, consider using _malloca which is a more secure version of _alloca.

ExempleExample

Le code suivant génère cet avertissement car _alloca peut générer l’exception :The following code generates this warning because _alloca can generate exception:

#include <windows.h>

void f( )
{
  void *p = _alloca(10);
  // code ...
}

Pour corriger cet avertissement, utilisez _malloca et ajoutez le Gestionnaire d’exceptions comme indiqué dans le code suivant :To correct this warning, use _malloca and add exception handler as shown in the following code:

#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 aussiSee Also

_malloca_malloca