Aracılığıyla paylaş


safebuffers

Microsoft özel

Derleyici bir fonksiyon için arabellek taşması güvenlik denetimleri eklemek değil söyler.

__declspec( safebuffers )

Notlar

/GS Derleyici seçeneği için arabellek taşmaları yığınındaki güvenlik denetimleri ekleyerek sınamak derleyici neden olur.Güvenlik denetimleri için uygun veri yapılarını türde açıklanan /gs (arabellek güvenlik denetimi).Arabellek Taşması algılama hakkında daha fazla bilgi için bkz: , Derleyici güvenlik derinlik denetler msdn Web sitesinde.

Uzman elle kod gözden geçirme veya harici analiz bir işlevi bir arabellek taşması güvenli olup olmadığını belirlemek.__ Uygulayarak güvenlik denetimleri fonksiyon bu durumda bastırabilirsinizdeclspec(safebuffers) işlev bildirimi için anahtar sözcük.

Uyarı notuUyarı

Arabellek güvenlik denetimlerini önemli güvenlik koruması sağlamak ve performans göz ardı edilebilir bir etkisi vardır.Bu nedenle, bunları dışında burada bir işlev performansını önemli bir konudur ve güvenli olması için bilinen bir işlevi taraflar engelleme emin öneririz.

Satır içi işlevleri

A birincil işlevi kullanabileceğiniz bir inlining bir kopyasını eklemek için anahtar sözcüğü bir ikincil işlev.__declspec(safebuffers) Anahtar sözcük için bir işlev uygulanan, o işlev için arabellek taşması algılaması bastırılır.Ancak, inlining etkileri __declspec(safebuffers) anahtar sözcüğünü aşağıdaki şekillerde.

Varsayalım /GS derleyici seçeneği için her iki işlevi belirtilen, ancak birincil işlevini belirten __declspec(safebuffers) anahtar sözcüğü.İkincil işlevi veri yapılarını güvenlik denetimleri için uygun hale ve işlevi bu denetimleri bastırmaz.Bu durumda:

  • Belirtmek __forceinline derleyici en iyi duruma getirme bağımsız olarak işlev satır içi için derleyici zorlamak için ikincil işlev anahtar sözcüğü.

  • İkincil işlev güvenlik denetimleri için uygun olduğu için onun belirttiği __ olsa güvenlik denetimleri de birincil işlevi uygulanırdeclspec(safebuffers) anahtar sözcüğü.

Örnek

Aşağıdaki kodu __ nasıl kullanılacağı gösterilirdeclspec(safebuffers) anahtar sözcüğü.

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

SON Microsoft özel

Ayrıca bkz.

Başvuru

__declspec

C++ anahtar sözcükler

satır içi, __inline, __forceinline

strict_gs_check