次の方法で共有


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