次の方法で共有


C6255

更新 : 2007 年 11 月

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