Sdílet prostřednictvím


C6255

upozornění C6255: _alloca označuje selhání zvýšením výjimkou přetečení zásobníku.Zvažte použití _malloca místo

Toto upozornění znamená, že volání _alloca zjistil mimo z místní exception handling._allocaby měl vždy volat z v chráněné oblasti popisovač výjimky, protože jej mohou vyvolat výjimku pro přetečení zásobníku, při selhání.Pokud je to možné, namísto použití _alloca, zvažte použití _malloca což je bezpečnější verze _alloca.

Příklad

Následující kód vygeneruje tato upozornění, protože _alloca mohou vytvářet výjimky:

#include <windows.h>

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

Chcete-li opravit toto upozornění, použijte _malloca a přidat popisovač výjimky, jak je znázorněno v následujícím kódu:

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

Viz také

Referenční dokumentace

_malloca