/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 |
---|---|---|
/we4146 |
Ein unärer Subtraktionsoperator wurde auf einen vorzeichenlosen Typ angewendet, was zu einem Ergebnis ohne Vorzeichen führte. |
|
/we4308 |
Eine negative integrale Konstante wurde in einen vorzeichenlosen Typ konvertiert, was zu einem möglicherweise bedeutungslosen Ergebnis führte. |
|
/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. |
|
/we4533 |
Der Code, der eine Variable initialisiert, wird nicht ausgeführt. |
|
/we4700 |
Verwendung einer nicht initialisierten lokalen Variablen. |
|
/we4703 |
Verwendung einer möglicherweise nicht initialisierten lokalen Zeigervariablen. |
|
/we4789 |
Pufferüberlauf, wenn bestimmte CRT-Funktionen (C Run-Time) verwendet werden. |
|
/we4995 |
Verwendung einer mit dem Pragma deprecated gekennzeichneten Funktion. |
|
/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
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Wählen Sie den Ordner C/C++ aus.
Auf der Seite Allgemein wählen Sie die Option aus der Dropdownliste SDL-Prüfungen aus.