警告 C26481
ポインター演算は使用しないでください。 代わりに span (bounds.1) を使用してください。
解説
このチェックは、C++ Core Guidelines のルール「I.13: 配列を単一のポインターとして渡さない」をサポートします。 生ポインターが算術演算で使用されるたびに、span<T>
や vector<T>
などのより安全な種類のバッファーに置き換える必要があります。
このチェックは I.13 よりも制限が厳しく、 zstring
や czstring
型はスキップされません。
C26481 と C26485 は、境界安全プロファイルのルールに由来しています。 これらのルールは、C++ Core Guidelines Checker の最初のリリースで実装されました。 これらは、生ポインターの安全ではない使用を回避するのに役立つので、生ポインター カテゴリに適用できます。
例
このサンプルでは、ポインターの算術演算に対する警告が生成されます。
// 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);
}