Why does CppCheck give an array access out of bounds error for this static const array?

1.9k views Asked by At

CppCheck 1.67 has identified and array accessed out of bounds error on one of my projects. I didn't think the code was wrong, so I have stripped down the code to the bare minimum example that still raises the same error. Why does CppCheck give the following error for the first C++ example (inside a namespace) but not for the second example (without a namespace)?

Am I doing something wrong with the namespace on my array initialisation or is this an error in CppCheck?

Reported error: "Array 'testArray[5]' accessed at index 5, which is out of bounds."

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

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

No reported errors:

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

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

There are 1 answers

2
Alex Jenter On BEST ANSWER

Seems to be an error in CppCheck, maybe is connected with this issue on the tracker:

FP arrayIndexOutOfBounds: member variable of class declared in namespace.