C6255
aviso C6255: _alloca indica a falha gerando uma exceção de estouro de pilha.Considere utilizar _malloca no lugar
Este aviso indica que uma chamada a _alloca foi detectada fora do tratamento local de exceção._alloca deve sempre ser chamado de dentro do intervalo protegido de um manipulador de exceção, porque pode lançar uma exceção de estouro de pilha em caso de falha.Se possível, em vez de usar _alloca, considere usar _malloca que é uma versão mais segura de _alloca.
Exemplo
O código a seguir gerencia este aviso, pois _alloca pode gerar uma exceção:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Para corrigir este aviso, use _malloca e adicione o manipulador de exceção, conforme mostrado no código o seguir:
#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 ...
}
}