C++ SIGSEGV循环中的分段错误
问题描述:
我有以下代码,最终出现分段错误。C++ SIGSEGV循环中的分段错误
for (int a=0; a<inputFileList.size(); a++)
{
fileLines = readFile(inputFileList[a].c_str());
for (int i = 0; i < fileLines.size(); i++)
{
if (fileLines[i].find("text") != string::npos)
{
bool warnFound = false, errFound = false;
i++;
while (fileLines[i].find("message") == string::npos && i < fileLines.size())
{
if (fileLines[i].find("error") != string::npos)
errFound = true;
else if (fileLines[i].find("warning") != string::npos)
warnFound = true;
i++;
}
i--;
if (errFound)
errCtr++;
else if (warnFound)
warnCtr++;
else
okCtr++;
}
}
fileLines.clear();
}
当我删除while循环,我不会再遇到这个错误。但我不知道这个循环有什么问题。
THX的支持
答
的同时,也许应该读
while (i < fileLines.size() && fileLines[i].find("message") == string::npos)
答
此:
while (fileLines[i].find("message") == string::npos && i < fileLines.size())
应该是:
while (i < fileLines.size() && fileLines[i].find("message") == string::npos)
答
我不知道,如果它有任何事情要做你看到的错误,但你似乎在第7行i++
有问题。即使i == fileLines.size() - 1
,即使fileLines[i].find("message")
下一行将访问不存在的项目,它可能会增加我。
这就是我浪费了一个小时......愚蠢...... 谢谢! – Tom 2011-05-09 12:37:42