Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
_alloca wskazuje błąd przez zgłoszenie wyjątku przepełnienia stosu. Rozważ użycie _malloca zamiast tego
To ostrzeżenie wskazuje, że wykryto wywołanie metody _alloca
poza lokalną obsługą wyjątków.
Uwagi
_alloca
należy zawsze wywoływać z zakresu chronionego programu obsługi wyjątków, ponieważ może zgłosić wyjątek przepełnienia stosu w przypadku awarii. Jeśli to możliwe, zamiast używać _alloca
metody , rozważ użycie metody _malloca
, która jest bezpieczniejszą wersją programu _alloca
.
Nazwa analizy kodu: UNPROTECTEDUSEOFALLOCA
Przykład
Poniższy kod generuje to ostrzeżenie, ponieważ _alloca
może wygenerować wyjątek:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Aby poprawić to ostrzeżenie, użyj _malloca
i dodaj procedurę obsługi wyjątków, jak pokazano w poniższym kodzie:
#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 ...
}
}