cppcheck:越界访问,因为“容器为空”但容器不为空

问题描述 投票:0回答:1

我有这个简单的测试代码,它创建一个包含 2 个元素的向量并打印它的大小,然后打印第一个元素:

#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<double> arr {0, 0.1};
    cout << arr.size() << endl;
    cout << arr[0] << endl;
}

代码编译并运行良好,并按预期输出 2,然后输出 0。

但是,当我对此文件运行 cppcheck 时,它会报告以下内容:

error: Out of bounds access in expression 'arr[0]' because 'arr' is empty. [containerOutOfBounds]
 cout << arr[0] << endl;
            ^

但是

arr
显然不是空的!

这是误报还是我遗漏了什么?

Cppcheck版本2.12

c++ cppcheck
1个回答
0
投票

这似乎是另一个 cppcheck 错误/缺陷。几年前有类似的问题

这是老问题:

表达式“test_array[0]”中的访问越界,因为“test_array”为空。

© www.soinside.com 2019 - 2024. All rights reserved.