2017-09-26 57 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

我回答了我自己的问题,让我意识到这是一个愚蠢的问题。我在另一个班级中使用这个班级,并且没有任何内容会进入我的向量。因此,我试图访问空向量。