Freigeben über


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

Siehe auch

_malloca