Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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};
like image 905
Owen Avatar asked Nov 21 '14 11:11

Owen


1 Answers

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.

like image 94
Alex Jenter Avatar answered Oct 14 '22 17:10

Alex Jenter