Compartilhar via


C6255

Aviso C6255: _alloca indica a falha levantando uma exceção de estouro de pilha. Considere usando o _malloca

Este aviso indica que uma chamada para _alloca foi detectado fora da manipulação de exceção do local. _allocadeve sempre ser chamado de dentro do intervalo protegido de um manipulador de exceção porque ele pode gerar uma exceção de estouro de pilha em caso de falha. Se possível, em vez de usar _alloca, considere o uso de _malloca que é uma versão mais segura do _alloca.

Exemplo

O código a seguir gera este aviso porque _alloca pode gerar exceções:

#include <windows.h>

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

Para corrigir esse aviso, use _malloca e adicionar 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 ...
  }
}

Consulte também

Referência

_malloca