/sdl (Ek Güvenlik Denetimlerini Etkinleştir)

Önerilen Güvenlik Geliştirme Yaşam Döngüsü (SDL) denetimlerini etkinleştirir. Bu denetimler, güvenlikle ilgili uyarıları hatalara değiştirir ve ek güvenli kod oluşturma özellikleri ayarlar.

Sözdizimi

/sdl[-]

Açıklamalar

/sdl tarafından /GS sağlanan temel güvenlik denetimlerinin üst kümesini etkinleştirir ve geçersiz kılar /GS-. Varsayılan olarak /sdl kapalıdır. /sdl- ek güvenlik denetimlerini devre dışı bırakır.

Derleme Zamanı Denetimleri

/sdl bu uyarıları hata olarak etkinleştirir:

/sdl tarafından etkinleştirilen uyarı Eşdeğer komut satırı anahtarı Tanım
C4146 /we4146 İmzasız bir türe birli eksi işleci uygulanarak imzasız sonuç elde edildi.
C4308 /we4308 negatif tamsayı sabiti işaretsiz türe dönüştürülür ve bu da büyük olasılıkla anlamsız bir sonuçla sonuçlanır.
C4532 /we4532 Bir/finally__finallyblokta , breakveya goto anahtar sözcüklerinin continuekullanılması, anormal sonlandırma sırasında tanımsız bir davranışa sahiptir.
C4533 /we4533 Değişkeni başlatan kod yürütülmeyecek.
C4700 /we4700 Başlatılmamış bir yerel değişkenin kullanımı.
C4703 /we4703 Başlatılmamış olabilecek bir yerel işaretçi değişkeninin kullanımı.
C4789 /we4789 Belirli C çalışma zamanı (CRT) işlevleri kullanıldığında arabellek taşması.
C4995 /we4995 pragma deprecatedile işaretlenmiş bir işlevin kullanımı.
C4996 /we4996 olarak deprecatedişaretlenmiş bir işlevin kullanımı.

Çalışma zamanı denetimleri

Etkinleştirildiğinde /sdl , derleyici çalışma zamanında bu denetimlerin gerçekleştirildiği kodu oluşturur:

  • ile #pragma strict_gs_check(push, on)derlemeye eşdeğer, katı çalışma zamanı arabellek taşma algılama modunu /GS etkinleştirir.

  • Sınırlı işaretçi temizleme işlemi yapar. Başvuru içermeyen ifadelerde ve kullanıcı tanımlı yıkıcısı olmayan türlerde, işaretçi başvuruları çağrısının ardından geçerli olmayan bir adrese deleteayarlanır. Bu temizleme, eski işaretçi başvurularının yeniden kullanılmasını önlemeye yardımcı olur.

  • Sınıf üyesi işaretçilerini başlatır. Nesne örneği oluşturmada işaretçi türünün sınıf üyelerini nullptr otomatik olarak başlatır (oluşturucu çalışmadan önce). Oluşturucunun açıkça başlatmadığı başlatılmamış işaretçilerin kullanılmasını önlemeye yardımcı olur. Derleyici tarafından oluşturulan üye işaretçisi başlatma işlemi şu süre boyunca çağrılır:

    • Nesne özel (kullanıcı tanımlı) kullanılarak ayrılmaz operator new

    • Nesne bir dizinin parçası olarak ayrılmaz (örneğin new A[x])

    • Sınıf yönetilmiyor veya içeri aktarılmıyor

    • sınıfı kullanıcı tanımlı bir varsayılan oluşturucuya sahiptir.

    Derleyici tarafından oluşturulan sınıf başlatma işlevi tarafından başlatılabilmesi için, üyenin bir özellik veya sabit değil, işaretçi olması gerekir.

Daha fazla bilgi için bkz . Uyarılar, /sdl ve başlatılmamış değişken algılamasını iyileştirme.

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>C/C++>Genel özellik sayfasını seçin.

  3. Özellik açılan denetimini kullanarak SDL denetimleri özelliğini ayarlayın. Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.

Ayrıca bkz.

MSVC Derleyicisi Seçenekleri
MSVC Derleyicisi Komut Satırı Söz Dizimi