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