Предупреждение C6255

_alloca указывает на сбой путем создания исключения переполнения стека. Вместо этого рекомендуется использовать _malloca

Это предупреждение указывает, что вызов _alloca обнаружен вне локальной обработки исключений.

Замечания

_alloca всегда следует вызывать из защищенного диапазона обработчика исключений, так как он может вызвать исключение переполнения стека при сбое. Если это возможно, вместо использования рекомендуется использовать _alloca_mallocaболее безопасную версию_alloca.

Имя анализа кода: UNPROTECTEDUSEOFALLOCA

Пример

Следующий код создает это предупреждение, так как _alloca может создать исключение:

#include <windows.h>

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

Чтобы исправить это предупреждение, используйте _malloca и добавьте обработчик исключений, как показано в следующем коде:

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

См. также

_malloca