C6255
upozornění C6255: _alloca naznačuje selhání vyvoláním výjimky přetečení zásobníku.Zvažte raději použití _malloca
Toto upozornění signalizuje, že volání _alloca bylo zjištěno mimo místní zpracování výjimek._alloca by měl být vždy volán z chráněného rozsahu obslužnou rutinou výjimky, protože může vyvolat výjimku přetečení zásobníku při selhání.Pokud je to možné, namísto _alloca zvažte použití _malloca, což je bezpečnější verze _alloca.
Příklad
Následující kód generuje toto varování, protože _alloca může generovat výjimky:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Pro opravení tohoto upozornění, použijte _malloca a přidejte obslužnou rutinu 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 ...
}
}