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