由于某种原因,以下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;
但我看不出这条线有什么问题。那么这段代码有什么问题呢?
答案 0 :(得分:4)
你正在注销vector
的结尾。使用
vector
初始大小
vector<string> stringTable(256);