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.
Attenzione |
---|
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