Advertencia C26481
No usar aritmética de punteros. Usar en su lugar un intervalo (bounds.1).
Comentarios
Esta comprobación admite la regla de C++ Core GuidelinesI.13: No pasar una matriz como un único puntero. Siempre que los punteros básicos se usen en operaciones aritméticas, deben reemplazarse por tipos más seguros de búferes, como span<T>
o vector<T>
.
Esta comprobación es más restrictiva que I.13: no omite zstring
ni czstring
tipos.
Las advertencias C26481 y C26485 proceden de las reglas de perfil de seguridad de límites. Estas reglas se implementaron en la primera versión del comprobador de C++ Core Guidelines. Son aplicables a la categoría de punteros básicos, ya que ayudan a evitar el uso no seguro de estos punteros.
Ejemplo
Este ejemplo da como resultado una advertencia para la aritmética de puntero.
// 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);
}