Udostępnij za pośrednictwem


Ostrzeżenie C26481

Nie używaj arytmetyki wskaźnika. Użyj opcji span (bounds.1).

Uwagi

Ta kontrola obsługuje regułę wytycznych podstawowych języka C++ I.13: Nie przekazuj tablicy jako pojedynczego wskaźnika. Zawsze, gdy nieprzetworzone wskaźniki są używane w operacjach arytmetycznych, powinny zostać zastąpione bezpieczniejszymi rodzajami buforów, takich jak span<T> lub vector<T>.

Ta kontrola jest bardziej restrykcyjna niż I.13: nie pomija ani nie pomija zstring typów czstring .

C26481 i C26485 pochodzą z reguł profilów Bounds Sejf ty. Te reguły zostały zaimplementowane w pierwszej wersji podstawowego narzędzia do sprawdzania wytycznych dotyczących języka C++. Mają zastosowanie do kategorii nieprzetworzonych wskaźników, ponieważ pomagają uniknąć niebezpiecznego używania nieprzetworzonych wskaźników.

Przykład

W tym przykładzie zostanie wyświetlone ostrzeżenie dotyczące arytmetyki wskaźnika.

// 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);
}