strict_gs_check
Questo pragma consente di controllare avanzato di sicurezza.
#pragma strict_gs_check([push,] on )
#pragma strict_gs_check([push,] off )
#pragma strict_gs_check(pop)
Note
Indica al compilatore di inserire un cookie casuali nello stack di funzione per il rilevamento alcune categorie di sovraccarico del buffer basato su stack.Per impostazione predefinita, l'opzione del compilatore di /GS (controllo di sicurezza buffer) non inserisce un cookie per tutte le funzioni.Per ulteriori informazioni, vedere /GS (Controllo sicurezza buffer).
È necessario compilare con /GS (controllo di sicurezza buffer) per abilitare lo strict_gs_check.
Utilizzare questo pragma in moduli di codice esposti ai dati potenzialmente dannosi.Questo pragma è particolarmente aggressiva e si applica alle funzioni che potrebbero non essere necessario questo difesa, ma è ottimizzato per ridurre l'effetto sulle prestazioni dell'applicazione risultante.
Anche se si utilizza questo pragma, è necessario cercare di scrivere codice protetto.Ovvero assicurarsi che il codice non abbia sovraccarichi del buffer.lo strict_gs_check può proteggere l'applicazione dai sovraccarichi del buffer che rimangono nel codice.
Esempio
Nel codice seguente si verifica un sovraccarico del buffer quando copiamo una matrice in una matrice locale.Quando si compila il codice con /GS, senza cookie viene inserita nello stack, poiché il tipo di dati matrice è un puntatore.Aggiungendo il pragma di strict_gs_check impone un cookie dello stack nello stack di funzione.
// pragma_strict_gs_check.cpp
// compile with: /c
#pragma strict_gs_check(on)
void ** ReverseArray(void **pData,
size_t cData)
{
// *** This buffer is subject to being overrun!! ***
void *pReversed[20];
// Reverse the array into a temporary buffer
for (size_t j = 0, i = cData; i ; --i, ++j)
// *** Possible buffer overrun!! ***
pReversed[j] = pData[i];
// Copy temporary buffer back into input/output buffer
for (size_t i = 0; i < cData ; ++i)
pData[i] = pReversed[i];
return pData;
}