Condividi tramite


safebuffers

Specifici di Microsoft

Indica al compilatore di non inserire controlli di sicurezza del sovraccarico del buffer per una funzione.

__declspec( safebuffers )

Note

/GS l'opzione del compilatore indica al compilatore di test per i sovraccarichi del buffer inserendo i controlli di sicurezza sullo stack.I tipi di strutture di dati che sono idonei per i controlli di sicurezza sono descritti in /GS (Controllo sicurezza buffer).Per ulteriori informazioni sul rilevamento del sovraccarico del buffer, vedere Controlli di sicurezza del compilatore dettagliati nel sito Web MSDN.

Analisi manuale esperta esterni o alla revisione del codice potrebbe determinare che una funzione è protetta da un sovraccarico del buffer.In tal caso, è possibile eliminare i controlli di sicurezza per una funzione applicando ildeclspec(safebuffers) parola chiave alla dichiarazione di funzione.

Nota di avvisoAttenzione

I controlli di sicurezza buffer garantisce la protezione importante di sicurezza e di un'influenza trascurabile sulle prestazioni.Di conseguenza, è consigliabile non vengono eliminati, tranne nei rari casi in cui le prestazioni di una funzione sono un problema critico e la funzione è nota come sicura.

funzioni inline

In funzione primaria è possibile utilizzare inline parola chiave per inserire una copia di un oggetto funzione secondaria.se il declspec(safebuffers)la parola chiave viene applicata a una funzione, rilevamento del sovraccarico del buffer viene eliminato per tale funzione.Tuttavia, tale operazione su ldeclspec(safebuffers)parola chiave nei modi seguenti.

Si supponga /GS è specificata l'opzione del compilatore per entrambe le funzioni, ma la funzione primaria specifica ildeclspec(safebuffers)parola chiave.Le strutture dei dati nella funzione secondaria rendono idoneo per i controlli di sicurezza e la funzione non elimina i controlli.In questo caso:

  • specificare __forceinline parola chiave nella funzione secondaria per far sì che il compilatore a inline che funziona indipendentemente dalle ottimizzazioni del compilatore.

  • Poiché la funzione secondaria è idonea per i controlli di sicurezza, i controlli di sicurezza vengono applicati anche alla funzione primaria anche se specifica ildeclspec(safebuffers)parola chiave.

Esempio

Nel codice seguente viene illustrato come utilizzare ildeclspec(safebuffers)parola chiave.

// compile with: /c /GS
typedef struct {
    int x[20];
} BUFFER;
static int checkBuffers() {
    BUFFER cb;
    // Use the buffer...
    return 0;
};
static __declspec(safebuffers) 
    int noCheckBuffers() {
    BUFFER ncb;
    // Use the buffer...
    return 0;
}
int wmain() {
    checkBuffers();
    noCheckBuffers();
    return 0;
}

Microsoft FINALE specifico

Vedere anche

Riferimenti

__declspec

Parole chiave C++

inline, __inline, __forceinline

strict_gs_check