Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Específico da Microsoft
Diz ao compilador para não inserir verificações de segurança de saturação de buffer para uma função.
Sintaxe
__declspec( safebuffers )
Observações
A opção de compilador /GS faz com que o compilador teste saturações de buffer inserindo verificações de segurança na pilha. Os tipos de estruturas de dados elegíveis para verificações de segurança são descritos em /GS (Buffer Security Check). Para obter mais informações sobre a deteção de saturação de buffer, consulte Recursos de segurança no MSVC.
Uma revisão manual de código especializada ou análise externa pode determinar que uma função está segura contra uma saturação de buffer. Nesse caso, você pode suprimir verificações de segurança para uma função aplicando a __declspec(safebuffers) palavra-chave à declaração da função.
Atenção
As verificações de segurança do buffer fornecem proteção de segurança importante e afetam o desempenho de forma insignificante. Portanto, recomendamos que você não os suprima, exceto no caso raro em que o desempenho de uma função é uma preocupação crítica e a função é conhecida por ser segura.
Funções em linha
Uma função primária pode usar uma palavra-chave inlining para inserir uma cópia de uma função secundária. Se a palavra-chave for aplicada a uma função, a __declspec(safebuffers) deteção de saturação de buffer será suprimida para essa função. No entanto, inlining afeta a __declspec(safebuffers) palavra-chave das seguintes maneiras.
Suponha que a opção de compilador /GS seja especificada para ambas as funções, mas a função primária especifique a __declspec(safebuffers) palavra-chave. As estruturas de dados na função secundária tornam-na elegível para verificações de segurança, e a função não suprime essas verificações. Neste caso:
Especifique a palavra-chave __forceinline na função secundária para forçar o compilador a inserir essa função, independentemente das otimizações do compilador.
Como a função secundária é elegível para verificações de segurança, as verificações de segurança também são aplicadas à função primária, embora ela especifique a
__declspec(safebuffers)palavra-chave.
Exemplo
O código a seguir mostra como usar a __declspec(safebuffers) palavra-chave.
// 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;
}
END Específico da Microsoft
Ver também
__declspec
Palavras-chave
inline, __inline, __forceinline
strict_gs_check