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 超出范围的主要内容,如果未能解决你的问题,请参考以下文章

分配对局部变量的引用,如果局部变量超出范围,它会超出范围吗?

对于char型的,如果超出范围怎样算?

对于char型的,如果超出范围怎样算?

JsLint'超出范围'错误

PDO PHP - PDOException - 数值超出范围:1264 第 1 行的列“customer_id”的值超出范围

为啥共享指针在 main 末尾没有超出范围?