6

CppCheck 1.67 đã xác định và mảng truy cập ngoài giới hạn lỗi trên một trong các dự án của tôi. Tôi không nghĩ rằng mã là sai, vì vậy tôi đã tước mã xuống ví dụ tối thiểu trần mà vẫn làm tăng cùng một lỗi. Tại sao CppCheck cung cấp lỗi sau cho ví dụ C++ đầu tiên (bên trong một không gian tên) nhưng không cho ví dụ thứ hai (không có không gian tên)?Tại sao CppCheck cho phép truy cập mảng ngoài giới hạn lỗi cho mảng const tĩnh này?

Tôi có làm gì sai với không gian tên trên mảng khởi tạo của mình hay đây có phải là lỗi trong CppCheck không?

Lỗi được báo cáo: "Array 'testArray [5]' được truy cập tại chỉ mục 5, nằm ngoài giới hạn".

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

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

Không báo cáo lỗi:

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

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

Trả lời

4

Có vẻ là một lỗi trong CppCheck, có thể được kết nối với vấn đề này trên tracker:

FP arrayIndexOutOfBounds: member variable of class declared in namespace.

+0

Điều này trả lời câu hỏi của tôi, cảm ơn. Sẽ không còn lo lắng về nó nữa. Tôi nghĩ rằng các lỗi được đóng mà không có một sửa chữa mặc dù? – Owen

+2

Thật vậy. Tôi đã mở lại vé và cung cấp một liên kết đến câu hỏi này, hy vọng họ sẽ sửa lỗi này. –

Các vấn đề liên quan