Предупреждение 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 ...
}
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по