[在此发现一个疑问:C++ - detect out-of-range access]
如果我的程序设置为"超出范围矢量访问",就像这样:
std::vector<int> A(2);
...
A[10] = 3;
我有办法确定找到这个错误吗? 我的意思是在调试模式下编译,看看是否某些断言停止了执行。
到目前为止,我已经自己查了一下。但是,我可能不必编写额外的代码吗?
P.S。我当然检查过断言。它没有被召唤。
通过这个程序:
#include <vector>
int main() {
std::vector<int> A(2);
A[10] = 3;
return 0;
}
由
编译g++ 1.cpp -O0; ./a.out
所以看起来std在代码中没有断言,我无法理解为什么他们不做这么简单的检查。