C6255
Aviso C6255: _alloca indica falha levantando uma exceção de estouro de pilha.Em vez disso, use _malloca
Este aviso indica que uma telefonar para _alloca foi detectada fora da manipulação de exceção do local. _alloca deve sempre ser chamado de dentro do intervalo protegido de um manipulador de exceção porque ele pode elevar uma exceção de estouro de pilha em caso de falha. Se possível, em vez de usar _alloca, considere a possibilidade de usar _malloca qual é uma versão mais segura do _alloca.
Exemplo
O código a seguir gera este aviso porque _alloca pode gerar uma exceção:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Para corrigir esse aviso, use _malloca e adicione o manipulador de exceção conforme mostrado no código a 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 ...
}
}