分段错误 - 大小为8的读取无效

时间:2012-01-29 21:51:44

标签: c++ string vector segmentation-fault

由于某种原因,以下C ++代码会导致分段错误:

#include <sstream>
#include <vector>

using namespace std;

string charToString(char c)
{
    stringstream ss;
    string s;
    ss << c;
    ss >> s;

    return s;
}

int main()
{
    vector<string> stringTable;

    for(int c = 0; c < 256; ++c){
        string s = charToString(c);
        stringTable[c] = s;
    }
}

Valgrind在行

上报告错误Invalid read of size 8
stringTable[c] = s;

但我看不出这条线有什么问题。那么这段代码有什么问题呢?

1 个答案:

答案 0 :(得分:4)

你正在注销vector的结尾。使用

vector初始大小
vector<string> stringTable(256);