Avviso C6255
_alloca indica un errore generando un'eccezione di overflow dello stack. Prendere in considerazione l'uso di _malloca
Questo avviso indica che è stata rilevata una chiamata a _alloca
al di fuori della gestione delle eccezioni locali.
Osservazioni:
_alloca
deve essere sempre chiamato dall'interno dell'intervallo protetto di un gestore eccezioni perché può generare un'eccezione di overflow dello stack in caso di errore. Se possibile, invece di usare _alloca
, è consigliabile usare _malloca
, ovvero una versione più sicura di _alloca
.
Nome dell'analisi del codice: UNPROTECTEDUSEOFALLOCA
Esempio
Il codice seguente genera questo avviso perché _alloca
può generare un'eccezione:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Per correggere questo avviso, usare _malloca
e aggiungere un gestore eccezioni come illustrato nel codice seguente:
#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 ...
}
}
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per