C6255

Mise à jour : novembre 2007

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 à _alloca a été détecté à l'extérieur de la gestion des exceptions locale. _alloca doit toujours être appelé dans la plage protégée d'un gestionnaire d'exceptions car il peut lever 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 ...
  }
}

Voir aussi

Référence

_malloca