插入字符串流时出现分段错误
问题描述:
我得到了分段错误,但我没有使用任何指针。当我插入到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();
}
答
在访问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();
}
答
我回答了我自己的问题,让我意识到这是一个愚蠢的问题。我在另一个班级中使用这个班级,并且没有任何内容会进入我的向量。因此,我试图访问空向量。
好吧,首先,如果矢量是空的,或者只有一个元素,将会出现明显的崩溃。 –
在'reList [1];'中访问第二项之前,您似乎没有检查'reList'是否具有足够的大小。此外,C/C++中的项目索引通常从0开始。 – VTT
请显示导致段错误的调用。 –