atoi转换分段故障在Windows上工作但在ubuntu中没有

时间:2013-08-13 06:48:12

标签: c++ vector atoi

#include <stdlib.h>
#include <stdio.h>  

vector <vector<string> > vector2;
vector<string> vector;

for(int i = 0; i < vector.size();i++)
{
    vector2[atoi(vector[i+1].c_str())].push_back(vector[i]);
    i++;
}

我在Windows上尝试这个,它运行正常。但是当我尝试在ubuntu64位上编译时 它有这个分段错误,有人启发吗?

1 个答案:

答案 0 :(得分:3)

从您显示的代码中,vector[i+1].c_str()将在vector的末尾读取循环的最后一次迭代。

你应该尽快退出循环吗?

for(int i=0; i<vector.size()-1;i++)

如果这没有用,你能发布一个更全面的例子来证明这个问题吗?目前还不能说是否例如vector2具有足够的容量,或vector的内容始终可转换为合适的索引。