2017-09-26 96 views
-1

我得到了分段錯誤,但我沒有使用任何指針。當我插入到stringstream中時發生了這種情況。插入字符串流時出現分段錯誤

std::string Relations::toString() 
{ 
    std::stringstream restring; 
    restring << ID << "("; 

    restring << reList[0]; // segmentation fault 

    for (int c = 1; c < reList.size(); c++) 
    { 
     restring << "," << reList[c]; 
    } 

    restring << ")"; 
    return restring.str(); 
} 
+0

好吧,首先,如果矢量是空的,或者只有一個元素,將會出現明顯的崩潰。 –

+0

在'reList [1];'中訪問第二項之前,您似乎沒有檢查'reList'是否具有足夠的大小。此外,C/C++中的項目索引通常從0開始。 – VTT

+0

請顯示導致段錯誤的調用。 –

回答

0

在訪問reList[0]之前,您必須檢查它是否存在。

std::string Relations::toString() 
{ 
    std::stringstream restring; 
    restring << ID << "("; 

    if (reList.size() > 0) 
    { 
     restring << reList[0]; 
     for (std::size_t i = 1; i < reList.size(); ++i) 
     { 
      restring << "," << reList[i]; 
     } 
    } 

    restring << ")"; 
    return restring.str(); 
} 
0

我回答了我自己的問題,讓我意識到這是一個愚蠢的問題。我在另一個班級中使用這個班級,並且沒有任何內容會進入我的向量。因此,我試圖訪問空向量。

相關問題