C6255
Aggiornamento: novembre 2007
C6255
avviso C6255: _alloca indica l'errore mediante la generazione di un'eccezione di overflow dello stack. Si consiglia di utilizzare _malloca
L'avviso indica che è stata rilevata una chiamata a _alloca esterna alla gestione delle eccezioni locale. _alloca dovrebbe essere sempre chiamato all'interno dell'intervallo protetto di un gestore eccezioni, in quanto è in grado di generare un'eccezione di overflow dello stack in caso di esito negativo. Se possibile, invece di _alloca, utilizzare _malloca, che è una versione più protetta di _alloca.
Esempio
Il codice seguente genera questo avviso in quanto _alloca è in grado di generare un'eccezione:
#include <windows.h>
void f( )
{
void *p = _alloca(10);
// code ...
}
Per risolvere il problema, utilizzare _malloca e aggiungere il 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 ...
}
}