Partager via


Avertissement C26481

N’utilisez pas l’arithmétique du pointeur. Utilisez plutôt l’étendue (bounds.1).

Notes

Cette vérification 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 vérification est plus restrictive que I.13 : elle n’ignore zstring pas ni czstring les types.

C26481 et C26485 proviennent des règles de profil de sécurité Bounds. 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);
}