다음을 통해 공유


C6255

업데이트: 2007년 11월

C6255

경고 C6255: _alloca는 스택 오버플로 예외를 발생시켜 실패를 나타냅니다. 대신 _malloca를 사용하십시오.

이 경고는 _alloca에 대한 호출이 로컬 예외 처리 외부에서 발견되었음을 나타냅니다. _alloca는 실패했을 때 스택 오버플로 예외를 발생시킬 수 있기 때문에 항상 예외 처리기의 보호된 범위 내에서 호출해야 합니다. 가능한 경우 _alloca를 사용하는 대신 _alloca의 더 안전한 버전인 _malloca를 사용하는 것이 좋습니다.

예제

다음 코드에서는 _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