警告 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 の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示