Compartir a través de


Advertencia C6255

_alloca indica un error mediante la generación de una excepción de desbordamiento de pila. Considere utilizar _malloca_s en su lugar.

Esta advertencia indica que se ha detectado una llamada a _alloca fuera del control de excepciones local.

Comentarios

Siempre se debe llamar a _alloca desde el ámbito protegido de un controlador de excepciones, porque puede iniciar una excepción de desbordamiento de pila en caso de error. Si es posible, en lugar de usar _alloca, considere la posibilidad de usar _malloca, que es una versión más segura de _alloca.

Nombre del análisis de código: UNPROTECTEDUSEOFALLOCA

Ejemplo

El código siguiente genera esta advertencia porque _alloca puede generar la excepción:

#include <windows.h>

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

Para corregir esta advertencia, utilice _malloca y agregue un controlador de excepciones como se muestra en el código siguiente:

#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 también

_malloca