2012-01-29 49 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()來填充它。 – 2012-01-29 21:56:38

+0

或「調整大小(256)」... – 2012-01-29 23:05:42

回答

4

您正在註銷vector的結尾。給vector一個初始大小與

vector<string> stringTable(256);