cppcheck 超出范围
Posted
技术标签:
【中文标题】cppcheck 超出范围【英文标题】:cppcheck out of bounds when it's not 【发布时间】:2019-09-17 22:16:33 【问题描述】:在使用静态 const 作为大小的类定义中设置 std::array 的大小时,cppcheck 不知道数组有多大。所以当我不在的时候它认为我出界了
执行#define 似乎可以解决问题,所以这是一个学术问题。
class A
A() : myArr()
myArr[0]=100;
static const int SOMEVAL = 4;
std::array<double, SOMEVAL+1> myArr;
int getVal() return myArr[1]; ;
int main(void)
A myA;
myA.getVal();
有什么想法吗?
【问题讨论】:
【参考方案1】:这是 cppcheck 中的一个缺陷:
https://trac.cppcheck.net/ticket/9202
在 1.89 版本中已修复:
https://trac.cppcheck.net/changeset/121093658d788126d5f94792c4ea00447fdbb979/
【讨论】:
以上是关于cppcheck 超出范围的主要内容,如果未能解决你的问题,请参考以下文章
分配对局部变量的引用,如果局部变量超出范围,它会超出范围吗?
PDO PHP - PDOException - 数值超出范围:1264 第 1 行的列“customer_id”的值超出范围