[在这里发现重复:C++ - 检测超出范围的访问]
如果我有一个“超出范围矢量访问”的程序,如下所示:
std::vector<int> A(2);
...
A[10] = 3;
我有办法确定找到这个错误吗? 我的意思是在调试模式下编译并查看某些断言是否会停止执行。
到目前为止,我已经自己检查过了。但是可能我不需要编写额外的代码吗?
PS我当然检查了断言。它没有调用。
有了这个程序:
#include <vector>
int main() {
std::vector<int> A(2);
A[10] = 3;
return 0;
}
编译
g++ 1.cpp -O0; ./a.out
所以看起来std在代码中没有断言,我不禁想知道他们为什么不做这么简单的检查。