C6255
警告 C6255: _alloca 會藉由引發堆疊溢位例外狀況來表示錯誤。 請考慮改用 _malloca
這則警告表示已在本機例外狀況處理外部偵測到對 _alloca 的呼叫。 您應該一律從例外處理常式的受保護範圍中呼叫 _alloca,因為它可能會在失敗時引發堆疊溢位例外狀況。 如果可能,請不要使用 _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 ...
}
}