一个简单的迭代器有关问题

一个简单的迭代器问题

#include <iostream> 
#include <vector>
#include <algorithm>
using namespace std; 

int main() 

vector<int> test;

for(int i = 1; i <= 9; ++ i)
test.push_back(i);

test.reserve(2*test.size());

vector<int>::iterator end_itr = test.end();

for(vector<int>::iterator iter = test.begin();
iter != end_itr;
++ iter)//这里崩溃
{
cout << *iter;
test.push_back(*iter);  
}

return 0;



程序如图所示的地方崩溃,按说我给了它两倍空间,for循环过程中迭代器不会失效,看了堆空间也确实如此,第一个元素push_back进去了,

0x00335024  fd fd fd fd  ????
0x00335028  01 00 00 00  ....
0x0033502C  02 00 00 00  ....
0x00335030  03 00 00 00  ....
0x00335034  04 00 00 00  ....
0x00335038  05 00 00 00  ....
0x0033503C  06 00 00 00  ....
0x00335040  07 00 00 00  ....
0x00335044  08 00 00 00  ....
0x00335048  09 00 00 00  ....
0x0033504C  01 00 00 00  ....
0x00335050  cd cd cd cd  ????
0x00335054  cd cd cd cd  ????
0x00335058  cd cd cd cd  ????
0x0033505C  cd cd cd cd  ????
0x00335060  cd cd cd cd  ????
0x00335064  cd cd cd cd  ????
0x00335068  cd cd cd cd  ????
0x0033506C  cd cd cd cd  ????
0x00335070  fd fd fd fd  ????
0x00335074  ab ab ab ab  ????
0x00335078  ab ab ab ab  ????



为什么++ iter崩溃了,请大神指教一个简单的迭代器有关问题
Iterator

文章评论