Sdílet prostřednictvím


Upozornění C26481

Nepoužívejte aritmetické aritmetické ukazatele. Místo toho použijte rozsah (bounds.1).

Poznámky

Tato kontrola podporuje pravidlo C++ Core Guidelines I.13: Nepředávejte pole jako jediný ukazatel. Kdykoli se v aritmetických operacích používají nezpracované ukazatele, měly by být nahrazeny bezpečnějšími druhy vyrovnávacích pamětí, například span<T> nebo vector<T>.

Tato kontrola je více omezující než I.13: Nepřeskočí zstring ani czstring typy.

C26481 a C26485 pocházejí z pravidel bezpečnostních profilů hranic. Tato pravidla byla implementována v první verzi nástroje C++ Core Guidelines Checker. Vztahují se na kategorii nezpracovaných ukazatelů, protože pomáhají vyhnout se nebezpečnému použití nezpracovaných ukazatelů.

Příklad

Výsledkem této ukázky je upozornění na aritmetické ukazatele.

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