/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ı | Açıklama |
---|---|---|
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 __finally blokta , break veya goto anahtar sözcüklerinin continue kullanı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 deprecated ile işaretlenmiş bir işlevin kullanımı. |
C4996 | /we4996 | olarak deprecated iş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
delete
ayarlanı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
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>C/C++>Genel özellik sayfasını seçin.
Ö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