Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Não use aritmética de ponteiro. Em vez disso, use intervalo (bounds.1).
Comentários
Essa verificação dá suporte à regra I.13 das Diretrizes Principais do C++: Não passar uma matriz como ponteiro único. Sempre que ponteiros brutos são usados em operações aritméticas, eles devem ser substituídos por tipos mais seguros de buffers, como span<T> ou vector<T>.
Esta verificação é mais restritiva do que I.13: ela não pula zstring ou czstring digita.
C26481 e C26485 vêm das regras de Perfil de Segurança de Limites. Essas regras foram implementadas na primeira versão do Verificador de Diretrizes Principais do C++. Elass são aplicáveis à categoria de ponteiros brutos, pois ajudam a evitar o uso inseguro de ponteiros brutos.
Exemplo
Este exemplo resulta em um aviso para aritmética de ponteiro.
// c26481_bad.cpp
// compile using:
// set Esp.Extensions=CppCoreCheck.dll
// cl /W3 /EHsc /permissive- /analyze /analyze:plugin EspXEngine.dll /analyze:ruleset "%VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets\CppCoreCheckBoundsRules.ruleset" c26481_bad.cpp
int main() noexcept
{
int * from_array = new int(10);
int * later_array = from_array + 1;
delete[](from_array);
}