Freigeben über


/sdl (Aktivieren zusätzlicher Sicherheitsüberprüfungen)

Fügt empfohlene SDL-Prüfungen (Security Development Lifecycle) hinzu. Diese Prüfungen enthalten zusätzliche sicherheitsrelevante Warnungen als Fehler und zusätzliche sichere Codegenerierungsfunktionen.

/sdl[-]

Hinweise

/sdl aktiviert eine Obermenge der grundlegenden Sicherheitsüberprüfungen, die von /GS bereitgestellt werden, und überschreibt /GS-. /sdl ist standardmäßig deaktiviert. /sdl- deaktiviert die zusätzlichen Sicherheitsüberprüfungen.

Überprüfungen zur Kompilierzeit

/sdl aktiviert die folgenden Warnungen als Fehler:

Durch /sdl aktivierte Warnung

Entsprechender Befehlszeilenschalter

Beschreibung

C4146

/we4146

Ein unärer Subtraktionsoperator wurde auf einen vorzeichenlosen Typ angewendet, was zu einem Ergebnis ohne Vorzeichen führte.

C4308

/we4308

Eine negative integrale Konstante wurde in einen vorzeichenlosen Typ konvertiert, was zu einem möglicherweise bedeutungslosen Ergebnis führte.

C4532

/we4532

Die Verwendung der Schlüsselwörter continue, break oder goto in einem __finally/finally-Block führt bei nicht ordnungsgemäßer Beendigung zu undefiniertem Verhalten.

C4533

/we4533

Der Code, der eine Variable initialisiert, wird nicht ausgeführt.

C4700

/we4700

Verwendung einer nicht initialisierten lokalen Variablen.

C4703

/we4703

Verwendung einer möglicherweise nicht initialisierten lokalen Zeigervariablen.

C4789

/we4789

Pufferüberlauf, wenn bestimmte CRT-Funktionen (C Run-Time) verwendet werden.

C4995

/we4995

Verwendung einer mit dem Pragma deprecated gekennzeichneten Funktion.

C4996

/we4996

Verwendung einer als deprecated markierten Funktion.

Überprüfungen zur Laufzeit

Wenn /sdl aktiviert ist, generiert der Compiler Code, um die folgenden Überprüfungen zur Laufzeit ausführen:

  • Aktiviert den Strict-Modus der /GS-Pufferüberlauferkennung zur Laufzeit; entspricht dem Kompilieren mit #pragma strict_gs_check(push, on).

  • Führt eingeschränkte Zeigerbereinigung aus. In Ausdrücken ohne Dereferenzierungen und in Typen ohne benutzerdefinierten Destruktor werden Zeigerverweise nach einem Aufruf von delete auf eine ungültige Adresse festgelegt. Dies dient dazu, die Wiederverwendung von veralteten Zeigerverweisen zu verhindern.

  • Führt Klassenmemberinitialisierung aus. Initialisiert bei der Objektinstanziierung (bevor der Konstruktor ausgeführt wird) automatisch alle Klassenmember auf null. Dies dient dazu, die Verwendung von nicht initialisierten Daten zu verhindern, die Klassenmembern zugeordnet sind, die der Konstruktor nicht explizit initialisiert.

Hinweise

Weitere Informationen finden Sie im Thema über Warnungen, /sdl und Verbessern der Erkennung von nicht initialisierten Variablen.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.

  2. Wählen Sie den Ordner C/C++ aus.

  3. Auf der Seite Allgemein wählen Sie die Option aus der Dropdownliste SDL-Prüfungen aus.

Siehe auch

Referenz

Compileroptionen

Festlegen von Compileroptionen