2012-01-29 18 views
0

の不正な読み取りセグメンテーションフォールトでは、次のC++コードの結果:「セグメンテーションフォールト - 何らかの理由でサイズ8

#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のは、ライン

stringTable[c] = s; 

にエラーInvalid read of size 8を報告します。しかし、私はすることができますこの行に何が間違っているかを見てください。では、このコードで何が問題になりますか?

+2

と入力してくださいベクトルは空です。 push_back()を使用してそれを設定することができます。 –

+0

または 'resize(256)' ... –

答えて

4

あなたはvectorの最後を書き留めています。 vectorにはじめてのサイズを

vector<string> stringTable(256); 
関連する問題