gpt4 book ai didi

c++ - 如何检查 std::vector 超出范围的访问

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:15 25 4
gpt4 key购买 nike

[在这里找到了一个拷贝:C++ - detect out-of-range access ]

如果我有一个“超出范围的 vector 访问”的程序,像这样:

  std::vector<int> A(2);
...
A[10] = 3;

我有办法找到这个错误吗?我的意思是类似于在 Debug模式下编译并查看某些断言是否会停止执行。

到目前为止,我已经自己检查过了。但也许我不必编写额外的代码?


附言我当然检查了断言。它不叫。

有了这个程序:

#include <vector>

int main() {
std::vector<int> A(2);
A[10] = 3;
return 0;
}

编译者

g++ 1.cpp -O0; ./a.out

所以看起来 std 在代码中没有断言,我禁不住想知道为什么他们不做这么简单的检查。

最佳答案

使用 at()成员函数:

std::vector<int> A(2);

A.at(10) = 3; //will throw std::out_of_range exception!

因为它可能抛出异常,所以你想捕获它。所以使用 try{}catch{} block !

希望对您有所帮助。

关于c++ - 如何检查 std::vector 超出范围的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com