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