警告 C26481
请勿使用指针算术。 请改用 span (bounds.1)。
备注
此检查支持 C++ Core Guidelines 规则 I.13:不要将数组作为单个指针传递。 每当在算术运算中使用原始指针时,应将其替换为更安全的缓冲区类型,例如 span<T>
或 vector<T>
。
此检查比 I.13 更严格:它不会跳过 zstring
或 czstring
类型。
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);
}