Condividi tramite


Avviso C6255

_alloca indica un errore generando un'eccezione di overflow dello stack. Prendere in considerazione l'uso di _malloca

Questo avviso indica che è stata rilevata una chiamata a _alloca al di fuori della gestione delle eccezioni locali.

Osservazioni:

_alloca deve essere sempre chiamato dall'interno dell'intervallo protetto di un gestore eccezioni perché può generare un'eccezione di overflow dello stack in caso di errore. Se possibile, invece di usare _alloca, è consigliabile usare _malloca, ovvero una versione più sicura di _alloca.

Nome dell'analisi del codice: UNPROTECTEDUSEOFALLOCA

Esempio

Il codice seguente genera questo avviso perché _alloca può generare un'eccezione:

#include <windows.h>

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

Per correggere questo avviso, usare _malloca e aggiungere un gestore eccezioni come illustrato nel codice seguente:

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

Vedi anche

_malloca