我正在尝试以下代码段
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct mytype
{
int a;
string b;
};
int main()
{
vector<mytype*> my_vec(100);
for (int i =0;i < 200; i++ )
{
if (my_vec[i] == NULL)
printf("%d th Vector is NULL \n",i);
else
printf("You are screwed \n");
}
return 0;
}
当我编译并尝试运行它时,除了第101个非NULL位置外,所有200个向量都为空。我可以知道为什么会这样吗? 我想在使用它之前将我的所有向量初始化为NULL
答案 0 :(得分:2)
你有一个包含100个元素的向量,访问第101个位置会调用未定义的行为。
答案 1 :(得分:2)
向量有100个元素:
vector<mytype*> my_vec(100);
// ^^^
你过分地迭代了100个元素:
for (int i =0;i < 200; i++ )
// ^^^
访问超出范围的向量是未定义的行为。任何值都是可能的,您的程序可能会按照它想要的行为。