为什么CppCheck为这个静态const数组提供了一个数组访问超出范围的错误?

时间:2014-11-21 11:38:41

标签: c++ namespaces indexoutofboundsexception static-analysis cppcheck

CppCheck 1.67已在我的一个项目中识别并且数组访问越界错误。我不认为代码是错误的,所以我已经将代码剥离到仍然引发相同错误的最小例子。为什么CppCheck为第一个C ++示例(在命名空间内)给出以下错误,而不是第二个示例(没有命名空间)?

我在数组初始化时是否对命名空间做错了,或者这是CppCheck中的错误?

报告错误:“数组'testArray [5]'在索引5处访问,超出范围。”

namespace TestNamespace
{
    class TestClass
    {
        static const int testArray[5];
    };

    const int TestClass::testArray[] = { 1, 2, 3, 4, 5};
}

没有报告错误:

class TestClass
{
    static const int testArray[5];
};

const int TestClass::testArray[] = { 1, 2, 3, 4, 5};

1 个答案:

答案 0 :(得分:4)

似乎是CppCheck中的错误,可能与跟踪器上的此问题有关:

FP arrayIndexOutOfBounds: member variable of class declared in namespace