Avertissement C26481
N’utilisez pas l’arithmétique du pointeur. Utilisez plutôt l’étendue (bounds.1).
Notes
Cette case activée prend en charge la règle C++ Core Guidelines I.13 : Ne passez pas de tableau en tant que pointeur unique. Chaque fois que les pointeurs bruts sont utilisés dans les opérations arithmétiques, ils doivent être remplacés par des types de mémoires tampons plus sûrs, tels que span<T>
ou vector<T>
.
Cette case activée est plus restrictive que I.13 : elle n’ignore zstring
pas ni czstring
les types.
C26481 et C26485 proviennent des règles bounds Coffre ty Profile. Ces règles ont été implémentées dans la première version du vérificateur des instructions de base C++. Elles s’appliquent à la catégorie des pointeurs bruts, car elles permettent d’éviter l’utilisation dangereuse de pointeurs bruts.
Exemple
Cet exemple génère un avertissement pour l’arithmétique du pointeur.
// 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);
}