首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL vector里的segmentation error有关问题

2012-04-02 
STL vector里的segmentation error问题。这个程序,11行那里,如果n3,就有Segmentation Error,n4, n2 等等

STL vector里的segmentation error问题。
这个程序,11行那里,如果n=3,就有Segmentation Error,n=4, n=2 等等其他数都没有问题。
怎么回事啊?(编译器linux下 gcc 4.4.5 )

C/C++ code
#include <iostream>#include <vector>using namespace std;int main (){    int i, n;    vector<int> myvector;    for (i=1; i<=10; i++) myvector.push_back(i);    vector<int>::iterator iter;    n = 4;    for (iter=myvector.begin(); iter<myvector.end(); iter++)    {        if (*iter%n == 0)            myvector.push_back(999);    }    return 0;}


[解决办法]
可能会引起内存的重新分配(当原来的内存不足以存放下新添加的元素时候)那么原来的iter肯定会失效。而且即使你的迭代器不失效,那么你的iter可能永远也到不了myvector.end(); 因为随着你不停的push_back那么元素也不停的增多。可能永远无法到达myvector.end()
[解决办法]
vector一般是2的幂次增长,push_back如果原来分配的内存不够就会重新分配,这个时候迭代器(也就是指针)就失效了

热点排行