警告 C26481

请勿使用指针算术。 请改用 span (bounds.1)。

备注

此检查支持 C++ Core Guidelines 规则 I.13不要将数组作为单个指针传递。 每当在算术运算中使用原始指针时,应将其替换为更安全的缓冲区类型,例如 span<T>vector<T>

此检查比 I.13 更严格:它不会跳过 zstringczstring 类型。

C26481 和 C26485 来自边界安全配置文件规则。 C++ Core Guidelines 检查器的第一个版本实现了这些规则。 它们适用于原始指针类别,因为它们有助于避免不安全使用原始指针。

示例

此示例生成指针算术警告。

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