Condividi tramite


Avviso C26481

Non usare l'aritmetica del puntatore. Usare invece span (bounds.1).

Osservazioni:

Questo controllo supporta la regola delle linee guida di base di C++I.13: Non passare una matrice come singolo puntatore. Ogni volta che i puntatori non elaborati vengono usati nelle operazioni aritmetiche, devono essere sostituiti con tipi più sicuri di buffer, ad esempio span<T> o vector<T>.

Questo controllo è più restrittivo di I.13: non ignora o czstring tipizstring.

C26481 e C26485 provengono dalle regole del profilo di sicurezza Bounds. Queste regole sono state implementate nella prima versione di C++ Core Guidelines Checker. Sono applicabili alla categoria di puntatori non elaborati perché consentono di evitare l'uso non sicuro di puntatori non elaborati.

Esempio

Questo esempio genera un avviso per l'aritmetica del puntatore.

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