Warnung C6255
_alloca gibt einen Fehler an, indem eine Stapelüberlaufausnahme ausgelöst wird. Verwenden Sie stattdessen _malloca.
Diese Warnung gibt an, dass ein Aufruf von _alloca
außerhalb der lokalen Ausnahmebehandlung erkannt wurde.
Hinweise
_alloca
muss stets innerhalb des geschützten Bereichs eines Ausnahmehandlers aufgerufen werden, da bei einem Fehler eine Stapelüberlaufausnahme ausgelöst werden kann. Wenn möglich, anstatt zu verwenden _alloca
, erwägen Sie die Verwendung _malloca
, die eine sicherere Version von _alloca
.
Codeanalysename: UNPROTECTEDUSEOFALLOCA
Beispiel
Im folgenden Code wird diese Warnung generiert, da _alloca
eine Ausnahme generieren kann:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Um diese Warnung zu korrigieren, verwenden Sie _malloca
, und fügen Sie den Ausnahmehandler hinzu, wie im folgenden Code dargestellt:
#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 ...
}
}