영어로 읽기

다음을 통해 공유


경고 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