Freigeben über


safebuffers

Microsoft-spezifisch

Weist den Compiler an, um sicherheitsüberprüfungen Pufferüberlauf für eine Funktion nicht eingefügt werden soll.

__declspec( safebuffers )

Hinweise

Die /GS-Compileroption bewirkt, dass der Compiler für Pufferüberläufe zu testen, indem Sie Sicherheitsüberprüfungen im Stapel eingefügt wird.Die Typen von Datenstrukturen, die für Sicherheitsüberprüfungen freigegeben sind, werden in /GS (Puffer-Sicherheitsüberprüfung)beschrieben.Weitere Informationen über Pufferüberlauf Auflistungserkennung finden Sie unter Compiler Security Checks In Depth auf der MSDN-Website.

Eine sachverständige manuelle Codeüberprüfung oder eine externe Analyse bestimmten werden, dass eine Funktion mit einem Pufferüberlauf sicher ist.In diesem Fall können Sie Sicherheitsüberprüfungen für eine Funktion unterdrücken, indem Sie dasdeclspec(safebuffers)-Schlüsselwort zur Funktionsdeklaration angewendet werden.

WarnhinweisVorsicht

Puffer sicherheitsüberprüfungen bieten Sicherheit und haben einen wichtigen schutz geringfügigen Auswirkungen auf die Leistung aus.Daher empfiehlt es sich, dass Sie sie nicht unterdrücken, außer in seltenen Fall, in dem sich die Leistung einer Funktion ein wichtiger Aspekt ist und die Funktion bekannt ist, um sicherzustellen.

Inlinefunktionen

Eine primäre Funktion kann ein Inlining-Schlüsselwort verwenden, um eine Kopie einer sekundären Funktioneingefügt werden soll.Wenn das Schlüsselwortdeclspec(safebuffers)auf eine Funktion angewendet wird, wird Pufferüberlauf Auflistungserkennung für diese Funktion unterdrückt.Allerdings wirkt sich das Inliningdeclspec(safebuffers)- Schlüsselwort in folgender Weise.

Angenommen, die /GS-Compileroption für beide Funktionen angegeben wird, aber die primäre Funktion dasdeclspec(safebuffers)Schlüsselwort angegeben wird.Die Datenstrukturen in der sekundären Funktion sind hier besonders geeignet für Sicherheitsüberprüfungen, und die Funktion unterdrückt die nicht überprüft.In diesem Fall gilt Folgendes:

  • Geben Sie das Schlüsselwort __forceinline auf der sekundären Funktion auf, um den Compiler zu dieser Funktion unabhängig von Compileroptimierungen inline zu erzwingen.

  • Da die sekundäre Funktion für Sicherheitsüberprüfungen freigegeben ist, werden auch Sicherheitsüberprüfungen mit der Hauptfunktion angewendet, obwohl sie dasdeclspec(safebuffers)Schlüsselwort angegeben wird.

Beispiel

Im folgenden Code wird gezeigt, wie dasdeclspec(safebuffers)- Schlüsselwort verwendet.

// 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;
}

BEENDEN Sie Microsoft-Besonderen

Siehe auch

Referenz

__declspec

C++-Schlüsselwörter

inline, __inline, __forceinline

strict_gs_check