Поделиться через


C6255

Обновлен: Ноябрь 2007

C6255

Предупреждение C6255. Функция _alloca сообщает об ошибке, вызывая исключение переполнения стека. Попробуйте вместо этого использовать _malloca

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

Пример

В следующем коде из-за возможности создания функцией _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