次の方法で共有


警告 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