Partilhar via


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

Consulte também

Referência

_malloca