共用方式為


C6255

更新:2007 年 11 月

警告 C6255: _alloca 會藉由引發堆疊溢位例外狀況來表示錯誤。請考慮改用_malloca

這個警告表示在本端例外處理 (Exception Handling) 外部偵測到 _alloca 的呼叫。因為 _alloca 會引發失敗時的堆疊溢位例外狀況,所以一定要從例外處理常式 (Exception Handler) 的保護範圍內呼叫它。如果可能,請不要使用 _alloca,而考慮使用 _malloca (其為 _alloca 的較安全版本)。

範例

下列程式碼會因為 _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