Udostępnij za pośrednictwem


safebuffers

Programu Microsoft

Nakazuje kompilatorowi nie wstawić kontroli zabezpieczeń przekroczenie buforu dla funkcji.

__declspec( safebuffers )

Uwagi

/GS Opcję kompilatora powoduje, że kompilator do testowania przekroczenia buforu wstawiając kontroli zabezpieczeń na stosie.Rodzaje struktur danych, które kwalifikują się do kontroli bezpieczeństwa są opisane w / GS (kontrola zabezpieczeń buforu).Aby uzyskać więcej informacji na temat wykrywania przepełnienia buforu, zobacz Kompilatora zabezpieczeń sprawdza, czy w głębi w witrynie MSDN w sieci Web.

Przeglądu ekspertów ręczne kodu lub analiza zewnętrznych może określić, że funkcja jest bezpieczne z przepełnienie buforu.W takim przypadku można pominąć sprawdzanie zabezpieczeń dla funkcji, stosując __declspec(safebuffers) słowa kluczowego do deklaracji funkcji.

Informacje dotyczące przestrogiPrzestroga

Kontrola zabezpieczeń buforu zapewniają ochronę ważnych funkcji zabezpieczeń i mają znikomy wpływ na wydajność.Dlatego zaleca się, że użytkownik nie Pomijaj je, z wyjątkiem w rzadkich przypadkach, gdy wydajność funkcji odgrywa kluczową rolę i wiadomo, że funkcja bezpieczne.

Wbudowane funkcje

A podstawową funkcją można użyć inline słowo kluczowe, aby wstawić kopię pomocniczych funkcji.Jeśli __declspec(safebuffers) słowo kluczowe jest stosowane do funkcji, wykrywanie przepełnienia buforu nie jest wyświetlany dla tej funkcji.Jednakże wpływa inline __declspec(safebuffers) słowa kluczowego w następujący sposób.

Załóżmy, że /GS dla obu funkcji określono opcję kompilatora, ale podstawową funkcją określa __declspec(safebuffers) słowa kluczowego.Struktur danych w funkcji pomocniczego upewnij kwalifikujących się do kontroli zabezpieczeń i funkcji nie odrzuca tych kontroli.W tym przypadku:

  • Określ __forceinline słowa kluczowego na pomocniczym funkcji, aby wymusić na kompilatorze wbudowane, które działają niezależnie od optymalizacje kompilatora.

  • Ponieważ funkcja drugorzędna kwalifikuje się do kontroli bezpieczeństwa, kontroli zabezpieczeń są także stosowane do podstawową funkcją nawet określa __declspec(safebuffers) słowa kluczowego.

Przykład

Poniższy kod pokazuje, jak używać __declspec(safebuffers) słowa kluczowego.

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

KONIEC Microsoft szczególne

Zobacz też

Informacje

__declspec

Słów kluczowych języka C++

wbudowane, __inline, __forceinline

strict_gs_check