【发布时间】:2009-06-11 11:49:07
【问题描述】:
在我编写的 C++ 程序中:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> a;
a.resize(1);
for( int i = 0 ; i < 10 ; i++ ) {
cout << a[i] << " ";
}
return 0;
}
此程序打印 a[0] 的正确值(因为它已分配),但也打印其余 10 个位置的值,而不是给出分段错误。
在编写代码时如何克服这个问题?当您的代码计算某些东西并愉快地访问不打算访问的内存时,这会导致问题。
【问题讨论】:
-
这里实际上并没有打印这些值 - 编译器在实现未定义行为方面有所不同。
-
我用的是 GNU 编译器.....你用的是哪一个
标签: c++ memory-management stl